私のリポジトリにあるパッケージの無人インストール用のスクリプトを書いています。これは、Debianのマークされた設定ファイルの1つを含むソフトウェアパッケージです。新しい構成ファイルを受け入れるために、apt-get
/aptitude
に渡すことができるオプションはありますか?
基本的に、apt
/aptitude
相当のdpkg --force-confnew
が必要です
apt-get
がYでインストールされているときに出される次の質問に答える必要があります
設定ファイル ``/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がありません
このように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
以下を試すことができます:
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2
ただし、これには空のデフォルトパスワードなどの影響があることに注意してください(puppet、chef、fabricなどのデプロイメント/構成ツールが必要な場合があります...)。
パスワードなしのSudo
呼び出しを許可する方法については sudoers(5) を参照してください。
forcefsck の代わりに、これをAPT設定に追加することをお勧めします。これにより、これらの書き込みにくいオプションを常に追加する必要がなくなります。また、このこれらの設定がある場合、無人アップグレードに役立ちます。
作成/etc/apt/apt.conf.d/71debconf
ファイルに次の内容を含めます。
Dpkg::Options {
"--force-confnew";
};
注(Geoffから):この変更はグローバルな変更になります。システム上に無人アップグレードを取得したいが、手動で構成した他のパッケージがある場合、これは適切なソリューションではありません。
他の回答に加えて、環境を設定する必要がある場合もあります CF_FORCE_CONFFNEW = 1 。
例えば。 debianストレッチのopensshは、openssh-server/openssh-7.4p1/debian/openssh-server.postinst
でucf(debconfではなく)を使用して、構成ファイルについて尋ねます。 (dget
を使用してopenssh-server.postinst
を確認できます http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1 -10 + deb9u4.dsc )
debconf preseeding の寛大なユーザーであることに加えて、このページのすべてのトリックを使用する必要がありました。
ただし、何かを逃したかどうかを知りたいので、export DEBIAN_FRONTEND=noninteractive
の直前で停止しました(重要な場合があります)。私たちのユースケースは、操作を開始するオペレーターです。アップグレードは非対話型であることが予想されますが、何かがうまくいかずダイアログが表示された場合、オペレーターは立ち会います。あなたの状況は異なる場合があります。
しかし、export DEBIAN_FRONTEND=noninteractive
はあなたのことわざの大ハンマーです。
注意してください:-o Dpkg::Options::=--force-confnew
やUCF_FORCE_CONFFNEW=1
を設定すると、インストールされているパッケージのall構成ファイルが上流の構成ファイルに戻ります。したがって、たとえばopenssh-server
の場合、/etc/ssh/sshd_config
は出荷時の設定にリセットされます。そして、例えばPermitRootLogin=yes
は削除されます。しかし、もちろんそれを使用しないので、大丈夫です! ;-)