自制.deb包的配置

自制.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

答案1

最后在本页的 HACKS 章节中找到了原因:
https://manpages.debian.org/buster/debconf-doc/debconf-devel.7.en.html

Debconf 目前尚未完全集成到 dpkg 中(但我想在将来改变这一点),因此目前需要进行一些混乱的黑客攻击。

您需要在 postinst 脚本的开头调用 debconf 库,使用以下代码:
. /usr/share/debconf/confmodule

相关内容