configuration - 构建预配置的 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/hostapd 等设置的 debian 软件包的正确方法是什么?

最佳答案

错误的原因是因为任何将文件写入系统的包都被标记为它的所有者。当两个包拥有同一个文件时,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”字段。这告诉系统这个包安装的文件会覆盖另一个包的文件。不过,我不确定我是否会推荐这种方法,因为它可能会在卸载时造成破坏。

关于configuration - 构建预配置的 debian 软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253144/

相关文章:

go - 如何使用 go get 导入特定版本的包?

java - 从java项目到包

debian - 在Virtualbox上安装Debian期间无法安装软件

java - Java Print 有什么方法可以忽略 lpoptions?

java - 如何将 Apache Drill 选项配置为环境变量?

xcode - 如何在 Xcode 分析和存档构建中设置 DEBUG 和 NDEBUG 宏?

c# - 在运行时保存并重新加载 app.config(applicationSettings)

Python:写入包内另一个目录的正确方法

python - 使用 argparse (python) 创建变量键/值对

linux - 无法在 debian 上安装 libapache2-mod-php5