2012-11-06 128 views
2

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

例如我试图设置像/ etc/default/hostapd之类的东西。我目前通过使用dh_install将文件复制到/ etc/default/hostapd并使用我希望它具有的配置来执行此操作。

这导致错误:

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

什么是创建一个Debian软件包会覆盖如/ etc /默认/ hostapd设置正确的方法是什么?

回答

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

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