Raspberry Pi(Raspbian)の自動更新

Raspberry Pi(Raspbian)の自動更新

前回に引き続き、システムの更新のお話です。
時々手動で更新というのもいいですが、忘れがちです。
サーバとして運用するなら、なおさら長期間の更新が行われない可能性が高いです。
そこで自動的に更新が行われるようにしておこうと思います。
とは言え自動的に行われることへのリスクもあるので、
本来はよく検討してから設定するほうがいいですね。
まあ今回は自動的にできるかどうかを確認したいので、とりあえずやってみます。

自動更新機能のインストール

以下のコマンドを実行します。

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

これで自動更新機能のパッケージがインストールされました。
2行目はパッケージの再設定を行っています。対話形式になるので、”Yes”と”ok”を
選択して進めてください。
ただ、上記でのインストール直後のデフォルト設定では、”debian”向けの設定に
なっているようです。この設定を”raspbian”向けに変更しようと思います。

自動更新機能の設定

“raspbian”向けの設定を行います。
“/etc/apt/apt.conf.d/50unattended-upgrades”に以下の編集(★)を加えます。
要は”raspbian”向けの設定のみとしてやればいいかと。
distro_id → Raspbian、distro_codename → stretch を指します。

// Within lines unattended-upgrades allows 2 macros whose values are
// derived from /etc/debian_version:
//   ${distro_id}            Installed origin.
//   ${distro_codename}      Installed codename (eg, "jessie")
Unattended-Upgrade::Origins-Pattern {
        "o=${distro_id},n=${distro_codename}"; ★
        // Codename based matching:
        // This will follow the migration of a release through different
        // archives (e.g. from testing to stable and later oldstable).
//      "o=Debian,n=jessie";
//      "o=Debian,n=jessie-updates";
//      "o=Debian,n=jessie-proposed-updates";
//      "o=Debian,n=jessie,l=Debian-Security";

        // Archive or Suite based matching:
        // Note that this will silently match a different release after
        // migration to the specified archive (e.g. testing becomes the
        // new stable).
//      "o=Debian,a=stable";
//      "o=Debian,a=stable-updates";
//      "o=Debian,a=proposed-updates";
// "origin=Debian,codename=${distro_codename},label=Debian-Security"; ★
};

自動更新されたくないパッケージについては、以下の個所(★)に追記します。

// List of packages to not update (regexp are supported)
Unattended-Upgrade::Package-Blacklist {
        "更新されたくないパッケージ名"; ★
//	"vim";
//	"libc6";
//	"libc6-dev";
//	"libc6-i686";
};

自動更新のたびに”autoremove”を行いたい場合は、以下の設定(★)を追記します。

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
Unattended-Upgrade::Remove-Unused-Dependencies "true"; ★

自動更新後の再起動を抑止したい場合は、以下の設定(★)を追記します。

// Automatically reboot *WITHOUT CONFIRMATION* if
//  the file /var/run/reboot-required is found after the upgrade 
//Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot "false"; ★

再起動はしてほしいけど時間を指定したい場合は、以下の設定(★)を追記します。
以下の例だと、夜中のAM3時に再起動することになります。

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
//  Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Unattended-Upgrade::Automatic-Reboot-Time "03:00"; ★

更新したら連絡してほしい場合は、以下の設定(★)を追記することでメールが来ます。
※もちろんメール送信可能な状態でなければなりません。

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
//Unattended-Upgrade::Mail "root";
Unattended-Upgrade::Mail "通知してほしいメールアドレス"; ★

エラーの場合だけ連絡してほしい場合は、以下の設定(★)を追記することでメールが来ます。

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::MailOnlyOnError "true"; ★

続けて”/etc/apt/apt.conf.d/20auto-upgrades”を編集します。
上から”update”、”upgrade”、”autoclean”の実行を、何日ごとに行うかになります。
以下の例だと毎日行われることになりますね。
ちなみにゼロにすると無効になり、自動更新は行われなくなります。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "1";

ubuntuなんかだとGUIでの設定もできるみたいですが、
raspbianでは見つけられませんでした。”PIXEL”デスクトップ環境だと
その機能がないのかもしれませんね。誰か知ってたらコメントください 苦笑

あと、このパッケージの動作ログは”/var/log/unattended-upgrades”に生成されます。
うまく動作してくれるか、きちんと確認したほうがいいですね。

とりあえずこれで自動更新の準備が整いました。
あとは起動時か6時か18時の定期実行タイミングで行われるはず。

余談ですが、”unattended-upgrades”を使わない場合、
crontabでもほぼ同じことが出来ますね。以下は毎週水曜日のAM3時に更新を行う場合。
※最初の5つの数字は分、時、日、月、曜日を表します。

sudo crontab -e
0 3 * * 3 sudo apt-get update && sudo apt-get upgrade -y

こちらの方が簡単ですね 笑

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA