Ubuntu 12でapt-getアップグレード中に変更された設定ファイルを自動化する方法


13

「knife cloudstack server create ...」を使用して新しいVMを構築するのが好きです。ブートストラップテンプレートは、「apt-get update」と「apt-get -y upgrade」で始まります。

その後、アップグレードは次のように停止します。

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

したがって、実際には2つの問題があります。

まず、デフォルトでapt-getに何かをさせることができますか?明らかに、答えを提供する方法はありません。

第二に、質問に対する正しい答えがどうあるべきかさえ知りません。それが置き換える設定ファイルはテンプレートから来ました。「nscd」が何をするかについてはまだ調べていません。(おそらく「Y」が正しい答えですが、質問の時点で行われた研究は困難です。)

回答:


15

引数を渡して、プロンプトが表示されないようにすることができます。これは私には有効です。

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold(私の選択)は、これらの「変更された構成ファイルについてどうしますか」という質問をデフォルトにしますN(現在インストールされているバージョンを保持します)

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

警告 -更新されたパッケージバージョンと互換性がない場合、変更された一部の構成ファイルはシステムを破損する可能性があります。自動化ソリューションにデプロイする前にテストしてください


5

インタラクティブな質問に絶対に答えたくない場合は、DEBIAN_FRONTENDフロントエンド変数をに設定しnoninteractiveます。

これはと同じくらい簡単DEBIAN_FRONTEND=noninteractive apt-get upgradeです。

メッセージは表示されず、デフォルトが選択されます。ほとんどの場合、これは設定ファイルが変更されないことを意味し、設定ファイルが変更されていない*.dpkg-newすべての場所のような名前のファイルが残されます。その後、手動で変更を解決するか、構成管理システムなどを使用してローカル構成をシステムにプッシュできます。

第二に、質問に対する正しい答えがどうあるべきかさえわからない

打撃Dのキーは、あなたがして検査することができるの違いを、表示されます。そのファイルを手動で変更したことがないことが確実な場合は、Yを選択して置換するのがおそらく安全です(バックアップを確認して、RIGHTをアップグレードします!!)。Nを選択すると、パッケージに大きな変更がなければ、95%の確率で安全な古いファイルが保持されます。これは通常、upgrade / dist-upgradeコマンドを実行する前に読んだchangelog / release notesに記載されています。

それを過ぎたら、テスト環境で最初にコマンドを試してください。うまくいかないか確認してください。本当に確信が持てない場合は、diffを入手し、パッケージと調査のドキュメントを読んでください。


--force-yesに対してDEBIAN_FRONTEND = noninteractiveをアドバイスしますか?デフォルトではNOに聞こえますが、この場合は「yes」の方が正しい可能性が高いです。(標準入力がないため、キーを押すことができません。)
モジョ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.