为另一个软件包提供定制的配置文件

我们在工作中使用Ubuntu,我需要对许多系统进行相同的配置更改,所以我正在打包这些更改。 其中一个配置更改是将lightdm设置为自动登录。 为了打包这个更改,似乎我需要覆盖现有的/etc/lightdm/lightdm.conf文件,并用我的定制lightdm.conf替换它。这似乎不是一个好主意。
我应该如何以一种不会导致故障并符合社区其他成员工作方式的方式来做到这一点?
1个回答

这通常是通过创建一个包,使用dpkg-divert在其维护脚本中将旧的配置文件移开来实现的。
  • 在您的预安装中,将文件转移开。

    dpkg-divert --add --package $your_package_name --rename \
        --divert /path/to/file.disabled \
        /path/to/file
    
  • 在您的卸载后脚本中,将文件转移回来。

    dpkg-divert --remove --package $your_package_name --rename \
        /path/to/file
    

查看:http://www.debian.org/doc/debian-policy/ap-pkg-diversions.html

帮助抽象dpkg-divert的一个解决方案是由MIT的Debathena项目创建和维护的config-package-dev软件包。他们有一个详细教程


从链接页面的示例来看,似乎应该在preinst和postrm文件中都提供--divert选项。 - nmgeek
1在https://wiki.debian.org/ConfigPackages上似乎有更新的文档,建议将文件安装到/etc/site/并使用符号链接,而不是直接安装到/etc/。它还建议使用postinst而不是preinst以及prerm而不是postrm。 - Ulf Adams