Могу ли я вызывать другие команды dpkg или apt- * в моих скриптах preinst?


9

Как часть моего собственного (собственного) файла .deb, который будет развернут на устройствах Ubuntu 12.04, мне нужно добавить несколько репозиториев PPA, запустить обновление apt-get, а затем установить пакеты из этих PPA.

Можно ли это сделать с помощью скриптов .preinst или .postinst в моем файле .deb?

Я полагаю , что если установлен мой файл .deb ( sudo dpkg -i testing.deb) , что некоторые замки или механизмы вероятно существуют , которые препятствовали бы мне вызов некоторых команд , таких как add-apt-repository, apt-get updateи apt-get install.

Это правильное предположение?


Ответы:


7

Ты прав. Сценарии сопровождающего не должны вносить никаких изменений в состояния apt или dpkg, кроме тех изменений, которые будут внесены при установке пакета в любом случае.

Установка файла в /etc/apt/sources.list.dэто нормально. Большинство пакетов, которые выполняют роль типа «установить этот пакет, чтобы добавить APT-репозиторий X в вашу систему», просто делают это (в отличие от вызова add-apt-repository). Также распространено оставлять открытый ключ GPG, используемый для входа в репо /etc/apt/trusted.gpg.d.

Если вы хотите упростить пользователю выполнение дополнительных шагов установки для вашего программного обеспечения, вы можете просто отправить скрипт, который выполняет эту работу, и попросить пользователя запустить скрипт вручную.

Но если вы действительно, действительно хотите позвонить apt-get updateили apt-get install, и т. Д. Автоматически, и вы не возражаете, что ваш пакет будет совершенно неприемлемым в Debian или Ubuntu, и ваши пользователи согласны с тем, что пакет действует таким образом, тогда вы можете поставить что-то, в /etc/cron.dчем проверяются любые существующие блокировки apt или dpkg, и, если они не удерживаются, выполняется ваш дополнительный шаг установки и организуется повторное выполнение этих шагов. Я не рекомендую такой подход.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.