2011-09-14 75 views
0

我一直在研究如何使用rpmbuild spec文件來更新已經存在的配置文件。如何使用rpmbuild更新預先存在的配置文件?

作爲一個例子,在我的rpm我想添加行到一個配置文件,例如/etc/stunnel/stunnel

[SomeAppName] 
accept = 8006 
connect = 127.0.0.1:5006 

我目前得到這個在我的%安裝部分:

cat stunnel/stunnel.conf >> %{buildroot}/etc/stunnel/stunnel.conf 

現在顯然這是垃圾,因爲每次我運行rpm將這些相同的行添加到配置文件的時間。

我也不希望/etc/stunnel/stunnel.conf文件成爲我的rpm的一部分,因爲我不想在刪除我的rpm包時刪除它。

我的問題是:

  1. 如何我可以排除是我轉的一部分/etc/stunnel/stunnel.conf?
  2. 在rpm中添加行到配置文件的正確方法是什麼?
  3. 請有人提供一些鏈接,我可以看到如何得到這個工作或我可以在我的spec文件中使用幾行的例子。

我看過Max Rpm官方指南,但到目前爲止我還沒有找到我的問題的答案。

回答

2

a)出於這個確切原因,許多更現代的工具還支持與平面文件平行的.d配置目錄。例如,我的Debian wheezy發行版將/ etc/stunnel視爲一個目錄,其中每個.conf文件都是單獨的stunnel配置。

二)建立的選擇似乎是一個條件結構類似

grep -q '[SomeAppName]' %{buildroot}/etc/stunnel/stunnel.conf || cat ... 

(或者,如果沒有把握,如果stunnel.conf已經存在)

grep -s '[SomeAppName]' %{buildroot}/etc/stunnel/stunnel.conf || cat ... 
+0

沒有想過使用。 d目錄。這可以工作,因爲我在紅帽和Apache已經使用這種方法:) – ghostJago

+0

我需要將%config /etc/stunnel/stunnel.conf放入%files部分嗎? – ghostJago

+0

如果您打算使用.d解決方案 - 不行。否則 - 我不太瞭解RPM軟件包來回答這個問題。 – thiton

相關問題