构建一个预配置的debian包

时间:2012-11-06 14:29:46

标签: configuration package debian

我正在尝试构建一个debian软件包,它会自动配置我的所有计算机以使用相同的配置文件和设置。

例如,我正在尝试设置alter / etc / default / hostapd。我目前正在使用dh_install将文件复制到/ etc / default / hostapd,并使用我希望它具有的配置。

这会导致错误:

trying to overwrite '/etc/default/hostapd', which is also in package hostapd

创建一个覆盖/ etc / default / hostapd等设置的debian软件包的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

错误的原因是因为将文件写入系统的任何程序包都标记为其所有者。当两个包拥有相同的文件时,deb机制不喜欢它。

您最好的选择是使用dpkg-divert将其他包的文件重命名为其他名称。在您的preinst脚本中,输入以下命令(假设您的包名为 my_package

dpkg-divert --divert /etc/default/hostapd.saved.my_package --package my_package --rename --add /etc/default/hostapd

在你的postrm脚本中,你需要输入相反的命令(未经测试,RTFM以正确获得精确的语法):

dpkg-divert --divert /etc/default/hostapd.saved.my_package --package my_package --rename --remove /etc/default/hostapd

至少在过去,在debian控制文件中放置一个“conffile”字段有一个更简单(虽然不太安全)的选项。这告诉系统该软件包安装覆盖另一个软件包文件的文件。但是,我不确定我会推荐这种方法,因为它可能会在卸载时破坏。