有没有办法看到每个包装的“处理触发器”究竟是什么?
正如我所理解的,通常的“ 的处理触发器 ”执行一些特定于包和系统的任务,例如将项目添加到启动菜单或更新配置文件。 是否有实际的方法来查看在此步骤中正在完成或更改的内容? 哪里可以找到步骤的确切行为?
有,但它需要通过一些bash脚本挖掘被触发的包。
-
假设
dpkg
输出如下:准备替换zim 0.52-1(使用... / archives / zim_0.52-1_all.deb)... 开箱更换zim ...... 处理shared-mime-info的触发器... 处理菜单的触发器......
-
在内部,
dpkg
所做的是使用triggered
命令行选项和零个或多个触发器选项为每个包调用postinst
脚本。 - 所以,你只需打开
/var/lib/dpkg/info/PACKAGE.postinst
(这是一个bash脚本),只需查看triggered
$1
时会发生什么
示例: man-db
触发器
无论何时安装的软件包都有手册页,你会看到最常见的“处理触发器”之一是man-db
。
如果你打开/var/lib/dpkg/info/man-db.postinst
,你会发现这个部分:
如果[“$ 1”=触发]; 然后 #我们不在这里打印状态消息,正如dpkg已经说过的那样 #“处理man-db的触发器......”。 run_mandb -pq 退出0 科幻
因此,您可以看到Processing triggers for man-db ...
只会导致使用-pq
选项运行run_mandb
函数(也可以在postinst
脚本中找到)。
有用的资源:
- 尝试使dpkg触发更有用,更少痛苦
- dpkg触发,丢失的操作方法文档