Ubuntu Weekly Recipe

第173回 管理者の操作を待たずにアップデートするPolicyKitの設定・unattended-upgrade

この記事を読むのに必要な時間:およそ 3 分

unattended-upgrade

unattended-upgradeは,ユーザの権限に関係なくシステムのcronジョブとして実行されます。また,「無人アップグレード」を意味する名前の通り,ユーザの操作を待つことなく実行できます。

unattended-upgradeを有効にするには,ソフトウェアセンターの[編集]-[ソフトウェア・ソース],またはアップデートマネージャの[設定]ボタンから「ソフトウェア・ソース」(software-properties-gtk)を開きます。次に[アップデート]タブで「確認せずにセキュリティアップデートをインストールする」を選択します図4)。

図4 「ソフトウェアソース」「確認せずにセキュリティアップデートをインストールする」を選択する

図4 「ソフトウェアソース」で「確認せずにセキュリティアップデートをインストールする」を選択する

デスクトップ環境が入っていない場合は,"unattended-upgrades"パッケージがインストールされていることを確認してから,"/etc/apt/apt.conf.d/10periodic"ファイルを次のように書き換えます。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "1";

ここまでの操作で,セキュリティアップデートが存在する場合には,ユーザの操作を必要とせずに自動でアップデートが適用されるようになります。

バグ修正のための推奨アップデートも自動で適用するには,"/etc/apt/apt.conf.d/50unattended-upgrades"の該当部分のコメントを解除して次のようにします。

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

また,パートナーリポジトリからFlash PlayerやSkypeをインストールしている場合には次のように項目を追加してセキュリティアップデートが適用されるようにします注5)。

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
//      For Partner Repository
        "Canonical ${distro_codename}";
};
注5
パートナーリポジトリには,セキュリティアップデートとバグ修正のためのアップデートの区別はありません。また,設定を書くのに必要な項目名は"apt-cache policy"を実行した時の"o=Canonical,a=natty"の部分です。

通常はここまでの設定で網羅できますが,Ubuntu Japanese Teamのリポジトリからパッケージ(Adobe Reader日本語版など)をインストールしている場合は,さらに追加の設定が必要です。次のように設定します。

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
//      For Partner Repository
        "Canonical ${distro_codename}";
//      For Ubuntu Japanese Team Repository
        "LP-PPA-japaneseteam ${distro_codename}";
        "Ubuntu-ja ${distro_codename}-non-free";
};

設定後に,アップデートが存在している状態で次のコマンドを実行して,期待した動作をするか確認します。

$ sudo unattended-upgrade --dry-run --debug

なお,余談ですが,10.10以前のunattended-upgradeでは,アップグレード中の急な電源遮断など"dpkg --configure -a"が必要な事態になった場合,それ以降動作してくれませんでしたが,11.04では自動で修復作業を実行し継続的に動作するようになりました。

他にも,いくつかオプションが増え,全部で次のような項目が設定できるようになっています。

  • 自動アップグレードの対象にするリポジトリ
  • アップグレードから除外するパッケージ
  • 自動修復機能の有効/無効(デフォルトは有効)
  • アップグレードの分割
  • アップグレード/エラー通知先メールアドレス
  • メールの送信をエラー時のみに限定
  • apt-get autoremoveの自動実行
  • アップグレード後に再起動が必要な場合にすぐに再起動
  • パッケージのダウンロード速度の制限

項目の詳細は,"/etc/apt/apt.conf.d/50unattended-upgrades"ファイル内で説明されているので,自分のマシン,実家のマシンと,用途に合わせて設定してみてください。

著者プロフィール

村田信人(むらたのぶと)

Ubuntu Japanese Teamメンバー。Ubuntuオフラインミーティングに参加するうちにUbuntu Japanese Teamの活動に興味を持ち,2009年8月に加入。