cron-apt で自動アップデート

cron-aptを使うと毎日だいたい決まった時間にパッケージの自動更新を行える。

インストール

apt-get install cron-apt

/etc/cron-apt/config を編集

デフォルトでは全項目がコメントアウトされているので、変更したい部分だけ変更する。

APTCOMMAND=/usr/bin/apt-get
MAILTO="tateisu@juggler.jp"
MAILON="changes"
DEBUG="changes"
OPTIONS="-o quiet=1"

/etc/cron-apt/action.d/3-download を編集

dist-upgrade の -d (ダウンロードのみでインストールしない) オプションを削る。

変更前

autoclean -y
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

変更後

autoclean -y
dist-upgrade -y -o APT::Get::Show-Upgraded=true

/etc/cron.d/cron-apt を編集

0 4     * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

のようにcrontabの設定が書かれている。
実際にはcron-aptは1時間以内のランダムな時間だけsleepしてから処理を開始するのだが、それでもサーバが複数ある場合にはもっと大きく時間帯をずらした方が良いかもしれない。

動作確認

  • /usr/sbin/cron-apt を実行して、送られてくるメールを見る
  • 変更がないとメールが送られてこないので、 /var/log/cron-apt/log を見る
  • 自動アップデートが発生した際に送られてきたメールを見る

質問の省略

パッケージのアップデートの際に設定ファイルの更新などで質問されることがある。自動更新ありの場合はデフォルトでは既存の設定が保持されることが多いので、その場合には質問が省略されるように設定すると自動更新が捗る。…が、この設定はやや危険かもしれない。

dpkg-reconfigure debconf を実行すると設定を変更できる。

# 質問に使われるインタフェース
Interface to use:
→ (今回の設定には影響しないので、変更しないこと)

# これより重要性が低い質問を省略する
Ignore questions with a priority less than: 
→ critical