すべてのアップグレードを自動的に適用したいUbuntuサーバーがいくつかあります。以前はapt-get update && apt-get upgrade
を実行する単純なスクリプトを使用していましたが、それほど堅牢ではなかったため、代わりにunattended-upgrades
に移行しようとしています。これは公式に推奨される方法のようです。
ただし、次のタスクを達成するのに苦労しています。
unattended-upgrades
が毎日実行されると仮定)。現時点では、パッケージがアップグレードされたときにのみメールを受け取るようです(メールが届かない場合は何かが間違っているので、毎日メールを受け取る方が好きです)。公式のUbuntuドキュメント を含む私が見つけることができるすべてのチュートリアルは、/etc/apt/apt.conf.d
の既存のファイルを編集するように言っています。ただし、追加のファイルを使用してオプションをオーバーライドすることを好みます。これは、後で「構成ファイルがメンテナーと異なります」というエラーが表示されないようにするためです。これにより、構成管理とバージョン管理ですべてのオーバーライドを維持しやすくなります.
この方法ですべての構成オプションをオーバーライドすることは可能ですか?私はこれを試してみましたが、いくつかのオーバーライドは機能するように見えますが、他のオーバーライドは機能しないようです。
私の現在のオーバーライドファイルは/etc/apt/apt.conf.d/99zz-overrides
(最後に読み取られるように名前が付けられています)にあり、次のものが含まれています。
Unattended-Upgrade::Mail "[email protected]";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
/etc/apt/apt.conf.d
の他の部分は変更していません。
あなたがしたい場合:
unattended-upgrades
を使用unattended-upgrades
自体内のパッケージスクリプトを変更しない(だから基本的にあなたのケーキを持って食べてください;-))
あなたがする必要があります:
grep
s var/log/dpkg.log
の今日の日付メールが空の場合:何も起こりませんでした。それ以外の場合は、ログがありますので、空のメールと完全なメールをすべて一緒に求めました。
https://Gist.github.com/roybotnik/b0ec2eda2bc625e19eaf および https://wiki.debian.org/UnattendedUpgrades からの描画:
ファイル/etc/apt/apt.conf.d/50unattended-upgrades
には、その構成に使用できるすべてのオプションとそれぞれの説明が含まれています。
アップグレードまたは問題がある場合にのみ、実行されるたびに電子メールを送信するオプションはないようです。ただし、すべてのアップグレードにメールを送信するか、問題のみを送信するか(Unattended-Upgrade::MailOnlyOnError ["true"/"false"]
質問の2番目の部分に答えるために、無人アップグレードが使用するソースを次のように設定できます。
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
updates
または他の行のコメントを外すと、対応するパッケージのセットが自動的に更新されます。