我可以让 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.dxorg-x11-xinitqt5-qtbase-gui 提供,因此,将该路径指定为依赖项可能会拉取您没有的包期待。

对于提供文件的每个可能的包,您都应该有一个虚拟包。包裹 my-xinit-x11 应包含:

Requires:     xorg-x11-xinit
Provides:     my-xinit

你的包裹应该包含:

Requires:    my-xinit

可以使用相同的 Provides 创建更多的虚拟包,因此当安装其中任何一个时,rpmbuild 都会看到依赖关系得到满足