据我了解,通常的“处理 < packagename > 的触发器“执行一些特定于软件包和系统的任务,例如向启动菜单添加项目或更新配置文件。有没有实际的方法可以查看在此步骤中究竟执行了什么或更改了什么?在哪里可以找到该步骤的确切行为?
答案1
有,但是需要挖掘一些被触发的包的 bash 脚本。
假设
dpkg
输出如下:准备替换 zim 0.52-1(使用 .../archives/zim_0.52-1_all.deb)... 正在拆包替换 zim ... 处理共享 mime 信息的触发器... 正在处理菜单触发器...
在内部,使用命令行选项和零个或多个触发选项
dpkg
来调用postinst
每个包的脚本。triggered
- 因此,你只需打开
/var/lib/dpkg/info/PACKAGE.postinst
(这是一个 bash 脚本),然后查看$1
当triggered
示例:man-db
触发器
最常见的“处理触发器”之一是man-db
,每当安装的包有男人页。
如果你打开/var/lib/dpkg/info/man-db.postinst
,你会发现以下部分:
如果 [ “$1” = 触发 ]; 那么 # 我们不在这里打印状态消息,正如 dpkg 已经说过的 #“正在处理 man-db 的触发器...”。 运行_mandb-pq 出口 0 菲
因此您可以看到,这Processing triggers for man-db ...
仅仅导致该run_mandb
函数(也在postinst
脚本中找到)使用该选项运行-pq
。
有用的资源: