我可以让 RPM 依赖于目录吗?
Can I have a RPM depend on a directory?
我正在创建一个 RPM 文件(使用 rpmbuild),其 post-install 脚本将在 /etc/X11/xinit/xinitrc.d/
中创建一个文件。为了确保该目录已经存在,我想指定对创建它的包的依赖性。
在这种情况下向规范文件添加 Requires: /etc/X11/xinit/xinitrc.d
行是否正确?或者它是否不允许依赖于目录,我应该添加对 xorg-x11-xinit
包的依赖(它似乎在我的系统上提供了这个目录)?
该软件包适用于 CentOS (RHEL) 6。
这应该可行(您可以需要任何路径),但您应该依赖于提供该路径的包。您不这样做一定是有原因的吗?
当需要的文件可以由多个包提供时,您应该使用虚拟包来避免意外。
在您的示例中,yum provides
表示 /etc/X11/xinit/xinitrc.d
由 xorg-x11-xinit
和 qt5-qtbase-gui
提供,因此,将该路径指定为依赖项可能会拉取您没有的包期待。
对于提供文件的每个可能的包,您都应该有一个虚拟包。包裹 my-xinit-x11
应包含:
Requires: xorg-x11-xinit
Provides: my-xinit
你的包裹应该包含:
Requires: my-xinit
可以使用相同的 Provides
创建更多的虚拟包,因此当安装其中任何一个时,rpmbuild 都会看到依赖关系得到满足
我正在创建一个 RPM 文件(使用 rpmbuild),其 post-install 脚本将在 /etc/X11/xinit/xinitrc.d/
中创建一个文件。为了确保该目录已经存在,我想指定对创建它的包的依赖性。
在这种情况下向规范文件添加 Requires: /etc/X11/xinit/xinitrc.d
行是否正确?或者它是否不允许依赖于目录,我应该添加对 xorg-x11-xinit
包的依赖(它似乎在我的系统上提供了这个目录)?
该软件包适用于 CentOS (RHEL) 6。
这应该可行(您可以需要任何路径),但您应该依赖于提供该路径的包。您不这样做一定是有原因的吗?
当需要的文件可以由多个包提供时,您应该使用虚拟包来避免意外。
在您的示例中,yum provides
表示 /etc/X11/xinit/xinitrc.d
由 xorg-x11-xinit
和 qt5-qtbase-gui
提供,因此,将该路径指定为依赖项可能会拉取您没有的包期待。
对于提供文件的每个可能的包,您都应该有一个虚拟包。包裹 my-xinit-x11
应包含:
Requires: xorg-x11-xinit
Provides: my-xinit
你的包裹应该包含:
Requires: my-xinit
可以使用相同的 Provides
创建更多的虚拟包,因此当安装其中任何一个时,rpmbuild 都会看到依赖关系得到满足