【问题标题】:Building a preconfigured debian package构建一个预配置的 debian 包
【发布时间】:2012-11-06 14:29:45
【问题描述】:

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

【问题讨论】:

    标签: configuration package debian


    【解决方案1】:

    错误的原因是任何将文件写入系统的包都被标记为它的所有者。当两个包拥有同一个文件时,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
    
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 2020-08-22
      • 2021-05-22
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2021-03-29
      相关资源
      最近更新 更多