如果依赖项更新,RPM 是否可以运行脚本?

如果依赖项更新,RPM 是否可以运行脚本?

我正在考虑编写一个包含 Python 虚拟环境的 RPM。 Python 虚拟环境包含 Python 可执行文件的副本(它是 Python 共享库周围的薄壳)。这意味着如果 Python 被更新,该虚拟环境中的 Python 可执行文件也应该被更新。

RPM 是否可以有一个在每次更新依赖项时运行的脚本?我注意到akmod每次更新内核时似乎都知道重新编译内核模块。它是通过挂钩 RPM 来实现这一点,还是通过某种检查正在运行的内核的“启动时”脚本来实现这一点?

答案1

在 RHEL 和 Fedora 系统上,内核包的特殊之处在于有一个/usr/lib/kernel/install.d和 ,/etc/kernel/install.d其中有用于在内核安装期间和安装后运行的/usr/lib/kernel/postinst.d脚本/etc/kernel/postinst.d。其他软件包(例如 akmods 或 dkms)可以将脚本放入适当的目录中,以调用与内核安装相关的脚本。new-kernel-pkg我相信这都是由命令处理的。

如果您使用的是 RPM 4 或更高版本,则可以在 RPM 规范中定义触发器来触发特定软件包的升级。查看 中的文档/usr/share/doc/rpm/triggers

相关内容