4

構成されていないファイルがいくつかあるパッケージをビルドしようとし/etcています。conffilesディレクトリに空package.conffilesのディレクトリを作成しても、それらは自動的に含まれますdebian

どうすればそれをやめることができdh_installdebますか?

4

4 に答える 4

8

raflの答えを理解しているかどうかはわかりませんが、以下のすべてをほぼ無条件にconffiledh_installdebに追加します。conffileを追加しますが、それらを上書きしません。debhelper=9.20120115ubuntu3/etcdebian/conffiles

で手動で上書きすることが可能debian/rulesです。たとえば、ファイルが conffile として登録されないようにするには、次のようにします。

override_dh_installdeb:
    dh_installdeb
    find ${CURDIR}/debian/*/DEBIAN -name conffiles -delete

(もちろん、インデントはハードタブでなければなりません)

于 2014-01-22T17:21:31.387 に答える
2

dpkg-maintscript-helperdebian/<package-name>.preinstを使用してpreinstスクリプトでアップグレード ルールを定義することができます。

#!/bin/sh
# preinst script for <package-name>

set -e

case "$1" in
    install|upgrade)
      if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then
        dpkg-maintscript-helper rm_conffile /etc/foo/conf.d/bar <Previous package version> -- "$@"
      fi
    ;;

    abort-upgrade)
    ;;

    *)
        echo "preinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

exit 0

詳細: Debian パッケージで古い conffile を削除する正しい方法

于 2014-05-15T10:21:21.123 に答える
1

Vasiliyの答えの延長として私が思いついたのは次のとおりです。dh_installdeb が行うことを効果的に行いますが、/etcファイルを自動的に追加することはありません。このようにして、conffile と見なされるファイルとそうでないファイルを完全に制御できるようになります。

override_dh_installdeb:
  dh_installdeb
  @echo "Recreating conffiles without auto-adding /etc files"
  @for dir in ${CURDIR}/debian/*/DEBIAN; do \
      PKG=$$(basename $$(dirname $$dir)); \
      FILES=""; \
      if [ -f ${CURDIR}/debian/conffiles ]; then \
          FILES="${CURDIR}/debian/conffiles"; \
      fi; \
      if [ -f ${CURDIR}/debian/$${PKG}.conffiles ]; then \
          FILES="$$FILES ${CURDIR}/debian/$${PKG}.conffiles"; \
      fi; \
      if [ -n "$$FILES" ]; then \
          cat $$FILES | sort -u > $$dir/conffiles; \
      elif [ -f $$dir/conffiles ]; then \
          rm $$dir/conffiles; \
      fi; \
  done

(もちろん、ルール ファイルに貼り付ける場合は REAL タブを使用してください)。

この回答では、BASH (または、BASH にシンボリック リンクされているか、その変形である /bin/sh) を使用しています。makefile の内部コマンドのみを使用してこれを実現する方法があるかもしれませんが、私はそれらが得意ではありません。

これは、同じソースから複数のバイナリ パッケージをビルドする場合でも機能するはずであり、プレーンdebian/conffilesとパッケージ固有のdebian/${pkg}.conffiles.

于 2014-06-24T15:40:00.520 に答える
0

もともと、この回答は、debian/conffilesインストールする実際の構成ファイルのみをリストした独自のファイルを提供することを提案していました。どうやらそれは構成ファイルを追加するだけで、conffilesファイル全体を上書きすることはありません。

しかし、なぜあなたがそれを望んでいるのか、私にはよくわかりません。ファイルが構成ファイルでない場合、ユーザーはそれらを編集しないため、自動 conffile 処理がアップグレード時に邪魔になることはありません。また、それらが実際に構成ファイルでない場合は、/etc 以外の場所に単純にインストールして、問題を回避することを強くお勧めします。

于 2010-09-18T03:30:05.023 に答える