Как вы получаете доступ к информации контрольного файла?
Есть ли способ для сценариев postinst, pre и т. Д. Получить доступ к информации в файле управления Debian при установке?
e.g.
Package: name
Version: 0.1-1
Depends: ...
2 ответа
Очевидно, скриптлеты postinst, pre и т. Д. Запускаются в среде, созданной dpkg. Управляющая информация - это переменные среды, к которым скриптлеты могут обращаться.
e.g.
DPKG_MAINTSCRIPT_ARCH=all
DPKG_RUNNING_VERSION=1.16.10
DPKG_MAINTSCRIPT_NAME=postinst
DPKG_MAINTSCRIPT_PACKAGE=zip
DPKG_NO_TSTP=yes
DPKG_ADMINDIR=/var/lib/dpkg
Есть несколько способов сделать это, но мне нравится делать это, используя dpkg
,
Попробуй это:
- Создайте временный каталог ex:
mkdir /tmp/pkg-tmp
- Извлечь контрольную информацию с помощью dpkg:
dpkg -e ./path/to/file.deb /tmp/pkg-tmp
- Проверьте контрольный файл, он должен находиться в каталоге верхнего уровня:
cat /tmp/pkg-tmp/control
- Вы можете захотеть очистить временный каталог, когда закончите проверку:
rm -rf /tmp/pkg-tmp
Там же будут присутствовать сценарии postinst, preinst и prerm. Если нет файлов с именем preinst
, postinst
, postrm
, или же prerm
, тогда это означает, что ни один из этих сценариев не является частью пакета Debian.
Некоторые пакеты могут иметь все из них, только 1 или 2, или ни одного - только зависит от пакета.
Если пакет находится в репозитории APT, вы можете запустить apt-get download package-name
сначала загрузите пакет Debian в текущем каталоге, затем выполните команды, перечисленные выше.
Я написал сообщение в блоге о распаковке пакетов Debian и изучении контрольного файла, файлов preinstall, postinstall, prerm, в которых содержится больше информации.