2014-01-22 32 views
0

我想为网站构建一个RPM包。 在我的spec文件的%post部分我想检查一下apache web服务器是否已安装。如果是这样,配置应复制到/etc/httpd/conf.d/rpmbuild“可选依赖”不需要

如果没有安装Apache,配置应该只存储在projectfolder中,管理员必须自己配置webserver。

所以我需要一个像

if [Apache installed] 
    cp [configfile] /etc/httpd/conf.d/ 

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

回答

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失败,如果它不存在。

以下是我测试过它:

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

有可能是你应该使用的,而不是硬编码/etc/一些宏,但我对我的方式出了门。