我可以根据目录获得RPM吗?

时间:2015-02-04 09:44:50

标签: linux dependency-management rpm rhel rpmbuild

我正在创建一个RPM文件(使用rpmbuild),其安装后脚本将在/etc/X11/xinit/xinitrc.d/中创建一个文件。为了确保该目录已经存在,我想在创建它的包上指定依赖项。

在这种情况下,在规范文件中添加Requires: /etc/X11/xinit/xinitrc.d行是否正确?或者是否不允许依赖目录,我是否应该在xorg-x11-xinit包上添加一个依赖项(它似乎在我的系统上提供了这个目录)?

该软件包适用于CentOS(RHEL)6。

2 个答案:

答案 0 :(得分:0)

这应该可以工作(您可以要求任何路径),但您应该依赖于提供该路径的包。你有没有理由不这样做?

答案 1 :(得分:0)

当所需文件可由多个软件包提供时,您应该使用虚拟软件包来避免意外。

在您的示例中,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会将依赖关系视为满意