rpmbuild“可选依赖”没有require

时间:2014-01-22 10:08:30

标签: centos rpmbuild rpm-spec

我想为网站构建RPM包。 在我的spec文件的%post部分中,我想检查是否安装了apache webserver。如果是,则应将配置复制到/etc/httpd/conf.d/

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

所以我需要一个像

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

修改
我发现,我可能会使用rpm -q httpd。但是我怎样才能在%post部分使用它?

1 个答案:

答案 0 :(得分:0)

(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如果不存在,则不会声称scriptlet失败。

以下是我测试它的方式:

[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/,但我正在出门。