【问题标题】:rpmbuild "Optional dependency" without requirerpmbuild“可选依赖”,没有要求
【发布时间】:2014-02-12 07:52:06
【问题描述】:

我想为一个网站构建一个 RPM 包。 在我的规范文件的%post 部分中,我想检查是否安装了 apache 网络服务器。如果是这样,配置应该复制到/etc/httpd/conf.d/

如果没有安装 Apache,配置应该只存储在项目文件夹中,管理员必须自己配置网络服务器。

所以我需要一个像

这样的结构
if [Apache installed]
  cp [configfile] /etc/httpd/conf.d/

编辑
我发现,我也许可以使用rpm -q httpd。但是如何在%post 部分使用它呢?

【问题讨论】:

    标签: centos rpmbuild rpm-spec


    【解决方案1】:

    (rpm -q --quiet httpd && cp yourfile /etc/httpd/conf.d/) || true

    这将复制您的配置文件。

    当然,更简单的方法可能就是

    ( [ -d /etc/httpd/conf.d ] && cp yourfile /etc/httpd/conf.d/) || true

    如果目录存在,则将其放在那里,无论目录为何存在。

    末尾的额外“|| true”导致该行的结果始终正常,因此rpm 不会声称脚本不存在失败。

    这是我的测试方法:

    [user@Niflheim ~]# rpm -q --quiet httpds && echo Yep
    [user@Niflheim ~]# echo $?
    1
    [user@Niflheim ~]# # Need to move to subshell...
    [user@Niflheim ~]# (rpm -q --quiet httpds && echo Yep) || true
    [user@Niflheim ~]# echo $?
    0
    [user@Niflheim ~]# (rpm -q --quiet httpd && echo Yep) || true
    Yep
    [user@Niflheim ~]# echo $?
    0
    [user@Niflheim ~]#
    

    您可能应该使用一些宏而不是硬编码/etc/,但我正在出门。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2017-08-27
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2020-07-29
      • 2020-06-21
      • 2012-12-19
      • 2020-03-29
      相关资源
      最近更新 更多