Repoからdebianの無人インストールでapt-getが新しい設定ファイルを受け入れるようにする方法


21

リポジトリにあるパッケージの無人インストール用のスクリプトを書いています。これはDebianのマークされた設定ファイルの1つを含むソフトウェアパッケージです。新しい構成ファイルを受け入れるようにapt-get/に渡すことができるオプションはありaptitudeますか?

基本的に私はapt/ aptitude同等のものが必要です dpkg --force-confnew

apt-getYでインストールしている間に提示された次の質問に答える必要があります


設定ファイル `` / opt / application / conf / XXX.conf` '

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

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     : background this process to examine the 

The default action is to keep your current version.

追加情報:

また、sudoコマンドを実行するためにパスワードをパイプで渡します

echo "mysudopass"|sudo -S apt-get mypackage

これは、インストールが構成の対話段階にあるときに、インストール中のエラーにフラグを立てています。

Ubuntu 10.04
aptバージョン:apt 0.7.25.3を使用しています

使用できない理由dpkg:これらのDebianはRepoからインストールする必要があり、マシンにローカルDebianがありません


回答:


22

このようにdpkgパラメータを渡すことができますapt-get

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

--force-confdef、古い設定ファイルがまだ存在する場合、彼らはオーバーライドされ得ることはありません。あなたはおそらくそれを使用しないでしょう、私は他の人のためにそれを文書化しています。

sudoユーザーの認証オプションを無効にするかNOPASSWD、特定のエントリにタグを追加する場合、パスワードを要求しません。例えば

someuser ALL = NOPASSWD: /usr/bin/apt-get

7

次を試すことができます:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

ただし、これには空のデフォルトパスワードなどの意味があることに注意してください(おそらく、puppet、chef、fabricなどのデプロイメント/設定ツールが必要でしょうか?)。

パスワードなしの呼び出しを許可する方法については、sudoers(5)を参照してくださいsudo


3

forcefsckが提案したものの代わりに、これをAPT設定に追加することをお勧めします。これにより、これらの書き込みが難しいオプションを常に追加する必要がなくなります。また、これらのセットアップがある場合、これは無人アップグレードに役立ちます。

/etc/apt/apt.conf.d/71debconf次のコンテンツを含むファイルを作成します。

Dpkg::Options {
  "--force-confnew";
};

注(Geoffから):この変更はグローバルな変更になります。システム上に無人アップグレードを取得したいが、手動で設定した他のパッケージがある場合、これは適切なソリューションではありません。


これは良い選択肢かもしれませんが、これはグローバルな変更になることに注意することが重要です。システム上に無人アップグレードを取得したい他のパッケージがあり、設定もしている場合、これは適切なソリューションではありません。
ジェフ

2

他の回答に加えて、環境UCF_FORCE_CONFFNEW = 1も設定する必要がある場合があります。

例えば、debian stretchのopensshはopenssh-server/openssh-7.4p1/debian/openssh-server.postinst、設定ファイルについて尋ねるためにucf(debconfではない)を使用します。(http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dscに対してopenssh-server.postinst使用することで確認できます)dget

debconf preseedingのリベラルなユーザーであることに加えて、このページのすべてのトリックを使用する必要がありました。

しかし、私たちはexport DEBIAN_FRONTEND=noninteractive何かを逃したかどうかを知りたい(それが重要な可能性がある)ので、少し足を止めました。ユースケースは、操作を開始するオペレーターです。アップグレードは非対話型であることが期待されますが、何か問題が発生してダイアログが表示される場合は、オペレーターが存在します。状況は異なる場合があります。

しかしexport DEBIAN_FRONTEND=noninteractive、あなたのことわざの大ハンマーです。

注意してください:設定-o Dpkg::Options::=--force-confnewおよび/ またはは、インストールされたパッケージのすべての設定ファイルが上流のものに戻ることをUCF_FORCE_CONFFNEW=1意味します。以下の場合、例えばだから、あなたの出荷時の設定にリセットされます。そして、例えば削除されます。しかし、もちろんあなたはそれを使用しないので、大丈夫です!;-)openssh-server/etc/ssh/sshd_configPermitRootLogin=yes

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.