用debian包修改外部文件

我正在创build一个debian软件包。 这将不得不改变/etc/inittab来将tty1/sbin/getty切换到/sbin/rungetty

当然,我可以在postinst中用sed来修改这行。 这是做这件事的最好方式,还是有没有debianish的方式来做到这一点?

提前致谢

在Debian政策手册 第 10.7.4 节“共享configuration文件”中记载了Debian的处理方法。 困难在于Debian策略规定,任何软件包都不应该直接从另一个软件包修改configuration文件,相反,拥有的软件包应该提供其他软件包可以用来修改configuration的助手。

在大多数系统上,sysvinit软件包会提供/etc/inittab ,所以要符合Debian策略,必须修改sysvinit软件包,为你的软件包提供一个改变inittab的机制。 sysvinit不是唯一可能提供/etc/inittab软件包,也可能来自暴发户,所以暴发户也不得不改变。 其他人可能没有/etc/inittab 。 如果你的软件依赖于一个特定的实现,或者在没有任何/etc/inittab情况下会发生故障,你需要你的软件包明确依赖于一个提供/etc/inittab的软件包。

这不可能发生。 其他要考虑的事情是,系统pipe理员对configuration文件所做的更改不应该被软件包所覆盖,所以如果您做了一些更改,pipe理员会撤销或修改您更改的内容,您不应该将其重新更改他如果你的软件包被重新configuration或升级(也许没有提示pipe理员的许可)。

除了这些关于什么时候可以修改文件的规则之外,在策略或约定中没有任何规定使用哪种工具来执行此操作。 sed是常用工具之一。