Скрипт предварительной установки пакета для сопровождающего `install` и `upgrade`

Скрипт предварительной установки пакета для сопровождающего `install` и `upgrade`

Согласно пакету Debianдокументация по скрипту сопровождающего, предустановочный скрипт можно вызвать либо с аргументом , installлибо с upgradeпервым аргументом:

Скрипт preinstможет быть вызван следующими способами:

  • new-preinstустановить
  • new-preinstустановитьстарая-версия новая-версия
  • new-preinstобновлениестарая-версия новая-версия

В чем разница между install old-version new-versionи upgrade old-version new-version? Первая форма (просто install) кажется понятной, но я не понимаю разницу между installи upgrade, где также указаны старые и новые номера версий.

решение1

Это объясняется враздел «подробности»:

  • если пакет уже полностью установлен, preinstвызывается upgradeи со старой и с новой версиями;
  • если пакет был ранее установлен и все еще имеет файлы конфигурации (он находится в состоянии «Config-Files»,то естьон отображается как rcв dpkg -lвыводе ), preinstвызывается с installи старой, и новой версиями;
  • если пакет устанавливается заново или был ранее удален, preinstвызывается с installинформацией о версии и без нее.

Поскольку preinstзапускается до фазы распаковки, upgradeуказывает на то, что доступна предыдущая версия содержимого пакета, тогда как installуказывает на то, что версия содержимого пакета отсутствует (кроме файлов конфигурации). Отдельно, если предоставлена ​​информация о версии, это указывает на то, что могут быть файлы конфигурации, которые необходимо обработать.

Не так много сценариев, где разница между upgradeи installсущественна, но один из них приходит на ум — это обновления, которые включают экспорт данных. Например, в upgradeрежимеslapdэкспортирует preinstсвои базы данных; в режиме это сделать невозможно, installпоскольку отсутствуют соответствующие инструменты.

решение2

Учитывать:

  1. Вы устанавливаете пакет A, версию x.
  2. Вы удаляете пакет A, но не очищаете его, поэтому файлы конфигураций, пользователи, группы и т. д. остаются.
  3. Вы устанавливаете пакет A, версию y.

Теперь скрипты поддержки должны обрабатывать эти conffiles, пользователей, группы и т. д., хотя, строго говоря, вы не обновляете, а просто устанавливаете. Вы можете увидеть это на второй блок-схеме здесь:«Установка пакета, который ранее был удален, но не очищен»

Связанный контент