2011-09-14 32 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

相关问题