Назад | Перейти на главную страницу

Конфигурация самодельного .deb пакета

Я пытаюсь создать свой собственный пакет 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