Как вы получаете доступ к информации контрольного файла?

Есть ли способ для сценариев 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,

Попробуй это:

  1. Создайте временный каталог ex: mkdir /tmp/pkg-tmp
  2. Извлечь контрольную информацию с помощью dpkg: dpkg -e ./path/to/file.deb /tmp/pkg-tmp
  3. Проверьте контрольный файл, он должен находиться в каталоге верхнего уровня: cat /tmp/pkg-tmp/control
  4. Вы можете захотеть очистить временный каталог, когда закончите проверку: 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, в которых содержится больше информации.

Другие вопросы по тегам