我正在尝试构建一个 debian 软件包,它会自动配置我的所有计算机以使用相同的配置文件和设置。
例如,我尝试设置诸如 alter /etc/default/hostapd.conf 之类的内容。我目前正在通过使用 dh_install 将文件复制到 /etc/default/hostapd 来执行此操作,并使用我希望它具有的配置。
这会导致错误:
trying to overwrite '/etc/default/hostapd', which is also in package hostapd
创建覆盖 /etc/default/hostapd 等设置的 debian 软件包的正确方法是什么?
错误的原因是任何向系统写入文件的包都被标记为其所有者。 deb 机制不喜欢两个包拥有同一个文件。
最好的选择是使用 dpkg-divert 将其他包的文件重命名为不同的名称。在您的预安装脚本中,输入以下命令(假设您的包名为 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 控制文件中。这告诉系统此软件包安装的文件会覆盖另一个软件包的文件。然而,我不确定我是否会推荐这种方法,因为卸载时它可能会破坏东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)