web-dev-qa-db-ja.com

他のパッケージの設定を上書きしようとするubuntuパッケージの開発

私は、shold overwrite configs of lightdm(autologin)でカスタムdebianパッケージをビルドしました。私のインストールスクリプト(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)

私はparam --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/rules:

#!/usr/bin/make -f

%:
    dh $@

override_dh_builddeb:
    dh_builddeb -- -z1

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

ありがとう。

1
IHopeLinux

あなたはしません。代わりにあなた divert それら。便宜上、 config-package-dev のようなヘルパーパッケージを使用しています。 config-package-devを使用すると、構成ファイルに特定の名前を付けると、インストールで必要な宛先変更が自動的に行われます。

たとえば、パッケージの名前がfoo-barの場合、次のようになります。

  1. debian/rulesには次のものが含まれます:

    %:
        dh $@ --with config-package
    
  2. 構成ファイルの末尾は.fooです(たとえば、lightdm/20-lubuntu.conf.fooはパッケージビルドプロセスによって作成されます)。この拡張子には、パッケージ名の最初のWordが使用されます。
  3. config-package-devには、ビルド依存として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
    
2
muru