我想为网站构建RPM包。
在我的spec文件的%post
部分中,我想检查是否安装了apache webserver。如果是,则应将配置复制到/etc/httpd/conf.d/
如果没有安装Apache,配置应该只存储在项目文件夹中,管理员必须自己配置网络服务器。
所以我需要一个像
这样的结构if [Apache installed]
cp [configfile] /etc/httpd/conf.d/
修改
我发现,我可能会使用rpm -q httpd
。但是我怎样才能在%post
部分使用它?
答案 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/
,但我正在出门。