krissi Asked: 2012-05-22 09:38:34 +0800 CST2012-05-22 09:38:34 +0800 CST 2012-05-22 09:38:34 +0800 CST 通过 debian 包修改外部文件 772 我正在创建一个 debian 包。这将不得不改变以从/etc/inittab切换到。tty1/sbin/getty/sbin/rungetty 当然,我可以sed在 postinst 中更改行。这是最好的方法还是有任何 debianish 方法来做到这一点? 提前致谢 debian packaging 1 个回答 Voted Best Answer stew 2012-05-22T10:26:27+08:002012-05-22T10:26:27+08:00 Debianish 处理此问题的方法记录在Debian 策略手册的第 10.7.4 节“共享配置文件”中。困难在于 Debian 政策规定任何软件包都不应直接修改另一个软件包的配置文件,相反,拥有软件包的软件包应提供其他软件包可以用来修改配置的帮助程序。 在大多数系统上,/etc/inittab将由 sysvinit 软件包提供,因此为了符合 Debian 政策,sysvinit必须修改该软件包以提供您的软件包一种更改 inittab 的机制。sysvinit 不是唯一可能提供的包/etc/inittab,它也可能来自 upstart,因此 upstart 也必须改变。其他人可能没有/etc/inittab. 如果你的软件依赖于一个特定的实现,或者在没有任何/etc/inittab存在的情况下会发生故障,你需要你的包明确依赖于提供/etc/inittab. 这不太可能发生。其他需要考虑的事情是系统管理员对配置文件所做的更改不应该被包覆盖,所以如果你做了一些更改,管理员撤消或修改了你更改的内容,你不应该重新更改它如果你的包被重新配置或升级(可能没有提示管理员许可)。 除了这些关于何时可以修改文件的规则外,政策或约定中没有任何内容规定使用哪些工具来执行此操作。sed是许多常用工具之一。
Debianish 处理此问题的方法记录在Debian 策略手册的第 10.7.4 节“共享配置文件”中。困难在于 Debian 政策规定任何软件包都不应直接修改另一个软件包的配置文件,相反,拥有软件包的软件包应提供其他软件包可以用来修改配置的帮助程序。
在大多数系统上,
/etc/inittab
将由 sysvinit 软件包提供,因此为了符合 Debian 政策,sysvinit
必须修改该软件包以提供您的软件包一种更改 inittab 的机制。sysvinit 不是唯一可能提供的包/etc/inittab
,它也可能来自 upstart,因此 upstart 也必须改变。其他人可能没有/etc/inittab
. 如果你的软件依赖于一个特定的实现,或者在没有任何/etc/inittab
存在的情况下会发生故障,你需要你的包明确依赖于提供/etc/inittab
.这不太可能发生。其他需要考虑的事情是系统管理员对配置文件所做的更改不应该被包覆盖,所以如果你做了一些更改,管理员撤消或修改了你更改的内容,你不应该重新更改它如果你的包被重新配置或升级(可能没有提示管理员许可)。
除了这些关于何时可以修改文件的规则外,政策或约定中没有任何内容规定使用哪些工具来执行此操作。
sed
是许多常用工具之一。