Configuration 构建预配置的debian包

Configuration 构建预配置的debian包,configuration,package,debian,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/ho

我正在尝试构建一个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包的正确方法是什么

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

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

dpkg divert--divert/etc/default/hostapd.saved.my_包--包my_包--重命名--添加/etc/default/hostapd 在postrm脚本中,需要使用相反的命令(未测试,RTFM以正确获取精确语法):

dpkg divert--divert/etc/default/hostapd.saved.my_包--包my_包--重命名--删除/etc/default/hostapd
至少在过去,有一个更简单(尽管不太安全)的选项来放置“conffile”debian控制文件中的字段。这告诉系统,此软件包安装的文件会覆盖另一个软件包的文件。但是,我不确定是否建议使用此方法,因为在卸载时它可能会破坏某些东西。

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

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

dpkg divert--divert/etc/default/hostapd.saved.my_包--包my_包--重命名--添加/etc/default/hostapd 在postrm脚本中,需要使用相反的命令(未测试,RTFM以正确获取精确语法):

dpkg divert--divert/etc/default/hostapd.saved.my_包--包my_包--重命名--删除/etc/default/hostapd 至少在过去,有一个更简单(虽然不太安全)的选项,在debian控制文件中放置一个“conffile”字段。这会告诉系统此软件包安装的文件会覆盖另一个软件包的文件。但是,我不确定我会推荐此方法,因为在卸载时它可能会破坏某些东西

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