rpm spec 文件魔术:每当更新包 Y 时自动更新包 X
rpm spec file magic: automatically updating package X whenever package Y is updated
简而言之,我有两个包:X 和 Y。X 取决于 Y。我将创建一个 RPM——编写规范文件等——用于 X,而 Y rpm 已经存在。
问题在于,虽然 X 可以而且应该与任何版本的 Y 一起工作,但每当 Y 更新时,都必须删除并重新安装 X。什么样的rpm魔法可以解决这个问题?
原因如下。 X 只能通过 Y 提供的命令来安装和卸载。命令本身不会改变。但是,Y 的命令的作用可能因版本而异。
此外,该命令不只是将文件添加到文件系统。它似乎更新了一个属于 Y 的二进制 DB 文件,谁知道 DB 文件中有什么。
对我来说,每当我有一个新的 Y 时卸载并重新安装 X 确实很有意义。实际上,到目前为止,X 一直是手动安装的。
我认为您无法让另一个人卸载并重新安装 rpm。但是,如果我理解得很好;您希望在每次更新 Y 时对 运行 进行某种 destroy 和 recreate 操作?
您可以使用 triggers 进行管理:
在X.spec中你可以输入:
%triggerin -- Y
# this script runs each time Y is installed or updated
# and will also run upon installation of X if Y was already installed before
# do your DB manipulation here
简而言之,我有两个包:X 和 Y。X 取决于 Y。我将创建一个 RPM——编写规范文件等——用于 X,而 Y rpm 已经存在。
问题在于,虽然 X 可以而且应该与任何版本的 Y 一起工作,但每当 Y 更新时,都必须删除并重新安装 X。什么样的rpm魔法可以解决这个问题?
原因如下。 X 只能通过 Y 提供的命令来安装和卸载。命令本身不会改变。但是,Y 的命令的作用可能因版本而异。
此外,该命令不只是将文件添加到文件系统。它似乎更新了一个属于 Y 的二进制 DB 文件,谁知道 DB 文件中有什么。
对我来说,每当我有一个新的 Y 时卸载并重新安装 X 确实很有意义。实际上,到目前为止,X 一直是手动安装的。
我认为您无法让另一个人卸载并重新安装 rpm。但是,如果我理解得很好;您希望在每次更新 Y 时对 运行 进行某种 destroy 和 recreate 操作?
您可以使用 triggers 进行管理:
在X.spec中你可以输入:
%triggerin -- Y
# this script runs each time Y is installed or updated
# and will also run upon installation of X if Y was already installed before
# do your DB manipulation here