【问题标题】:Can I have a RPM depend on a directory?我可以让 RPM 依赖于目录吗?
【发布时间】:2015-04-03 18:50:34
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过了吗?你测试了吗?
  • @KarolyHorvath 是的,我已经尝试过了,它有效;但我不确定它是否应该工作以及它是否得到官方支持,或者它是否只是偶然工作。
  • centos 发行版就像史前砖石......我怀疑任何事情都会改变。

标签: linux dependency-management rpm rhel rpmbuild


【解决方案1】:

这应该可以工作(你可以要求任何路径),但你应该依赖于提供该路径的包。你不这样做一定是有原因的?

【讨论】:

  • 我只是认为依赖目录而不是特定的包会更好。这样,另一个包也可以提供路径,理论上用户可以选择应该安装哪个包来满足这种依赖关系。我意识到在这种情况下它主要是理论上的,但想知道表达这种依赖关系的“正确”方式是什么。
  • 你说的情况:两个包在同一个目录下,是打包错误,不能同时安装。
【解决方案2】:

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

在您的示例中,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 都会看到依赖关系得到满足

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2019-12-30
    相关资源
    最近更新 更多