Я пытаюсь создать свой собственный пакет debian для развертывания некоторых скриптов. Мне нужны параметры от пользователя, я их собираю с помощью debconf.
Итак, я создал подпапку DEBIAN и поместил в нее файлы управления, шаблоны и конфигурационные файлы.
Затем я собираю свой пакет с помощью dpkg-deb.
Когда я устанавливаю пакет с apt install packagename.deb
, вопросы по debconf задаются, и все идет хорошо. Но когда я устанавливаю с dpkg -i packagename.deb
, не возникает никаких вопросов, и установка не выполняется из-за отсутствия необходимых переменных. Я также тестировал запуск dpkg-preconfigure packagename.deb
, и задаются вопросы.
Почему dpkg не запускает скрипт конфигурации?
Спасибо
Некоторые журналы показывают, что "Предварительная настройка" с dpkg отсутствует:
root@test-deploy:~# dpkg -i /tmp/packagename-6.5.deb
Selecting previously unselected package packagename.
(Reading database ... 41282 files and directories currently installed.)
Preparing to unpack /tmp/packagename-6.5.deb ...
Unpacking packagename (6.5-1) ...
Setting up packagename (6.5-1) ...
root@test-deploy:~# apt install /tmp/packagename-6.5.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'packagename' instead of '/tmp/packagename-6.5.deb'
The following NEW packages will be installed:
packagename
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/381 MB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 /tmp/packagename-6.5.deb packagename amd64 6.5-1 [381 MB]
Preconfiguring packages ...
Selecting previously unselected package packagename.
(Reading database ... 41282 files and directories currently installed.)
Preparing to unpack /tmp/packagename-6.5.deb ...
Unpacking packagename (6.5-1) ...`
На всякий случай я извлек управляющую информацию из файла deb: все в порядке.
root@test-deploy:/tmp# dpkg -e packagename-6.5.deb
root@test-deploy:/tmp# ls -l DEBIAN/
total 20
-rwxr-xr-x 1 root root 3337 Aug 21 16:21 config
-rw-r--r-- 1 root root 357 Aug 19 11:55 control
-rwxr-xr-x 1 root root 293 Aug 13 15:44 postinst
-rwxr-xr-x 1 root root 366 Aug 21 15:10 prerm
-rw-r--r-- 1 root root 2384 Aug 19 15:39 templates
Наконец выяснилось, почему в главе ХАКИ на этой странице:
https://manpages.debian.org/buster/debconf-doc/debconf-devel.7.en.html
Debconf в настоящее время не полностью интегрирован в dpkg (но я хочу изменить это в будущем), и поэтому в настоящее время требуется несколько беспорядочных хаков.
Вам нужно вызвать библиотеку debconf в начале вашего сценария postinst, используя этот код:
. /usr/share/debconf/confmodule