在 CentOS 5.8+ 和 Red Hat Enterprise 6+ 上,安装/更新软件包时,我注意到在适当的时候会创建一个标志文件 /var/run/reboot-required。在 Ubuntu(我猜 Debian 也是如此)上,如果安装了软件包“update-notifier-common”,则软件包 postinst 脚本会触发此标志文件的创建。在 RHEL/CentOS 上,我搞不清楚这是怎么发生的。
例如,在 RHEL 和 CentOS 上,我最近安装了几个更新,并创建了 /var/run/reboot-required。其中一个是“openssl”软件包升级。我猜这就是创建标志文件的原因,因为在 Ubuntu 上它也是这样工作的。然而我查看了全部对每个更新的软件包执行“rpm -q --scripts”,没有看到任何可能创建该标志文件的内容。我看到的大多是“postinstall program: /sbin/ldconfig”。
我的问题是:
- 什么在 RHEL/CentOS 上创建了这个标志文件?
- 它是否需要安装一个特殊的包,类似于 Ubuntu 上的“update-notifier-common”包?
答案1
任何包脚本或任何宏均未引用此文件rpm
(请参阅/usr/lib/rpm/**/macros.*
)。
我怀疑这来自一个非官方软件包,基于 Debian 和 Ubuntu 社区的常见做法。
在那里,它可以通过http://packages.debian.org/squeeze/update-notifier。
答案2
这是我自己创建的。我有一个脚本,用于跟踪软件包的版本(例如 Linux 内核),当这些版本发生变化时,它会创建“/var/run/reboot-required”。它是作为厨师食谱,所以它可能与其他的无关,而且除非你使用厨师,否则也不容易复制。
答案3
例如,我最近在 RHEL 和 CentOS 上安装了几个更新,并创建了 /var/run/reboot-required。其中一个是“openssl”包升级。
我尝试在 CentOS 5.8 和 6.0 上更新 OpenSSL,但都没有创建该文件。还有人遇到这种情况吗?
它的文件类型是什么?请显示其内容?
如果“需要”真的意味着“需要”,据我所知,只有内核更新需要你重新启动(如果你想启动到新内核,除非你使用拼接)。所有其他更新(包括:glibc、tzdata、SysVinit、...),您“只”需要重新启动所有使用它或依赖它的程序。