Я пытаюсь создать свой собственный пакет 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
корень @ test-deploy: / tmp # ls -l DEBIAN /
всего 20
-rwxr-xr-x 1 root root 3337 21 августа 16:21 конфигурация
-rw-r - r-- 1 root root 357 19 августа 11:55 control
-rwxr-xr-x 1 root root 293 13 августа 15:44 postinst
-rwxr-xr-x 1 корень root 366 21 августа 15:10 prerm
-rw-r - r-- 1 root root 2384 19 августа, 15:39 шаблоны
Наконец-то выяснил, почему, в главе о HACKS на этой странице:
https://manpages.debian.org/buster/debconf-doc/debconf-devel.7.en.html
Debconf в настоящее время не полностью интегрирован в dpkg (но я хочу изменить это в будущем), поэтому в настоящее время требуются некоторые беспорядочные хаки.
Вам необходимо вызвать библиотеку debconf в начале вашего сценария postinst, используя этот код:
. / usr / share / debconf / confmodule