有没有办法看到每个包装的“处理触发器”究竟是什么?

正如我所理解的,通常的“ 的处理触发器 ”执行一些特定于包和系统的任务,例如将项目添加到启动菜单或更新配置文件。 是否有实际的方法来查看在此步骤中正在完成或更改的内容? 哪里可以找到步骤的确切行为?

有,但它需要通过一些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脚本中找到)。

有用的资源:

  1. 尝试使dpkg触发更有用,更少痛苦
  2. dpkg触发,丢失的操作方法文档