什么会创建 /var/run/reboot-required 文件?

文件/var/run/reboot-required只会在内核更新时出现,还是软件包的开发人员可以自行决定是否要创建它呢?
以下链接解释了它是如何创建的(重复): 什么会创建文件/var/run/reboot-required
1个回答

Debian Policy没有提供关于何时应该使用reboot-required的任何指导,只是说明这是要使用的机制:

9.12. 标志需要重新启动

程序可以通过touch命令来标志需要重新启动:/run/reboot-required。通常将需要重新启动的包的名称添加到/run/reboot-required.pkgs中是一种惯例。如果包名已经存在于/run/reboot-required.pkgs中,则程序不应再次添加。

/run/reboot-required机制用于在安装或升级软件包后需要重新启动以完全应用所引入的更改。通常,在成功配置软件包的postinst维护脚本的末尾,会触发/run/reboot-required的操作。

根据/run/reboot-required约定,无法保证请求的重新启动何时或是否会发生。

所以,我会说任何软件包维护者在更新软件包后如果觉得需要重新启动,都可以使用它。常见的例子包括像glibc这样的核心库,它被很多东西使用,重启基本上是唯一有效的方法来确保所有内容都使用更新后的库。
一个用户检查了几个软件包的postinst,并列出了各种不同的列表:https://askubuntu.com/a/731993/158442。其他例子可以在这个错误报告中找到,该报告要求将此机制的文档包含在Debian政策中(#919507)。