2014-01-22 25 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/一些宏,但我對我的方式出了門。