通过 Debian 软件包修改外部文件

通过 Debian 软件包修改外部文件

我正在创建一个 Debian 软件包。这将需要进行修改才能从/etc/inittab切换到。tty1/sbin/getty/sbin/rungetty

当然,我可以sed在 postinst 中使用 an 来更改行。这是最好的方法吗?或者有没有 Debian 的方法可以做到这一点?

提前致谢

答案1

Debian 处理这个问题的方法记录在Debian 政策手册10.7.4 节“共享配置文件”。困难在于,Debian 政策规定任何软件包都不应直接修改另一个软件包的配置文件,而是拥有该软件包的软件包应提供帮助程序,以便其他软件包可以用来修改配置。

在大多数系统中,/etc/inittab会由 sysvinit 包提供,因此为了符合 Debian 政策,sysvinit必须修改该包以赋予您的包更改 inittab 的机制。 sysvinit 不是唯一可能提供 的包/etc/inittab,它也可能来自 upstart,因此 upstart 也必须更改。 其他可能没有/etc/inittab。 如果您的软件依赖于一个特定的实现,或者在没有任何实现的情况下会出现故障/etc/inittab,则需要您的包明确依赖于提供 的包/etc/inittab

这不太可能发生。其他需要考虑的事情是,系统管理员对配置文件所做的更改绝不应该被软件包覆盖,因此如果您进行了某些更改,管理员撤消或修改了您所做的更改,如果您的软件包被重新配置或升级(可能未提示管理员获得许可),您不应该将其改回给他。

除了关于何时可以修改文件的规则之外,没有任何政策或惯例规定使用哪些工具来执行此操作。sed是众多常用工具之一。

相关内容