ubuntu 软件包开发尝试覆盖其他软件包的配置

ubuntu 软件包开发尝试覆盖其他软件包的配置

我已经构建了一个自定义 debian 软件包,其中 shuold 覆盖了 lightdm(自动登录)的配置。我的安装脚本(debian/install)包含以下几行:

lightdm/* /etc/lightdm/lightdm.conf.d/

但是我在安装自定义包时出现以下错误:

dpkg: error processing /var/cache/apt/archives/AAA (--unpack):
trying to overwrite `/etc/lightdm/lightdm.conf.d/20-lubuntu.conf', which is also in package CCC
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
AAA E: Sub-process /usr/bin/dpkg returned an error code (1)

我知道我可以使用参数 --force-overwrite 通过 dpkg 安装软件包。但我想将其作为其他软件包的依赖项安装。那么我如何允许我的软件包覆盖其他软件包的配置文件?

我尝试过这个但是它不起作用(debian/rules):

#!/usr/bin/make -f

%:
   dh $@

override_dh_command:
   dh_command -- --force-overwrite

override_dh_installdeb:
   dh_installdeb -- --force-overwrite

我明白了。只剩下一件事了。现在我可以转移原始的 conf 文件了。但我的 DEBIAN/conffile 的校验和无效,所以我删除了它。我的 debian/rules 文件:

overrider dh_installdeb:
    dh_installdeb
    rm debian/mypackage-name/DEBIAN/conffiles

我收到以下警告:

Configuration file `/etc/lightdm/lightdm.conf.d/20-ubuntu.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ?

我怎样才能删除警告信息?

这是我的 debian/preinst 文件的内容:

#!/bin/bash
dpkg-divert --add --package mypackage-name --rename --divert /etc/lightdm/lightdm.conf.d/20-lubuntu.conf.real /etc/lightdm/lightdm.conf.d/20-lubuntu.conf

我的 debian/install 文件的内容:

lightdm/* /etc/lightdm/lightdm.conf.d/

内容 debian/规则:

#!/usr/bin/make -f

%:
    dh $@

override_dh_builddeb:
    dh_builddeb -- -z1

overrider dh_installdeb:
    dh_installdeb
    rm debian/mypackage-name/DEBIAN/conffiles

谢谢。

答案1

你不知道。你转移它们代替。为了方便起见,我使用类似config-package-dev使用config-package-dev,您可以为您的配置文件赋予一些特定的名称,然后安装程序将自动执行所需的转移。

例如,如果你的包名为foo-bar,那么:

  1. 你的debian/rules意愿是:

    %:
        dh $@ --with config-package
    
  2. 您的配置文件以 结尾.foo(例如,lightdm/20-lubuntu.conf.foo由您的包构建过程创建) - 您的包名称的第一个单词用于此扩展。
  3. config-package-dev将 作为一个 Build-Depends 放在你的 中debian/control。例如:

    Build-Depends: debhelper (>= 7.0.0~), config-package-dev (>= 5.0)
    

    这意味着config-package-dev在您尝试构建包之前需要安装,但不用于安装。

  4. 除了该文件之外debian/install,还要创建一个displace文件,列出需要转移的每个文件。例如,它将包含:

    /etc/lightdm/lightdm.conf.d/20-lubuntu.conf.foo
    

相关内容