web-dev-qa-db-ja.com

無人アップグレードで一部のパッケージが無視される

無人アップグレードをセットアップしましたが、一部のパッケージは自動更新されません。

root@survey:/home/martin# apt update

root@survey:/home/martin# unattended-upgrade -v --dry-run
Initial blacklisted packages:
Initial whitelisted packages:
Starting unattended upgrades script
Allowed origins are: o=Ubuntu,a=xenial, o=Ubuntu,a=xenial-updates, o=Ubuntu,a=xenial-security, o=UbuntuESM,a=xenial
No packages found that can be upgraded unattended and no pending auto-removals

root@survey:/home/martin# /usr/lib/update-notifier/apt-check -p
python-rfc3339
python-zope.hookable
python-configargparse
python-zope.component

/etc/apt/apt.conf.d/50unattended-upgradesのオリジンの設定:

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESM:${distro_codename}";
};

保留中のパッケージは、私の知る限り、公式のubuntuリポジトリ( Launchpadリンク )から提供されているため、unattended-upgradeで取得されない理由はわかりません。

コマンドの出力には、

無人でアップグレードできるパッケージが見つからず、保留中の自動削除もありません。

ツールによってパッケージが取得され、許可されたソースからパッケージが取得されたが、何らかの理由で無人でアップグレードすることが許可されない場合はありますか? なぜいくつかのパッケージが適格ではないのかを見つけるために、私はさらにどのようなステップを実行できますか?

7
Martin Melka

20auto-upgradesがないと思います。先に進む前に、問題を修正するかどうかを確認するために、最初に適切に実装する必要があります。これは 自動アップグレード のドキュメントで重要なステップであることがわかります。

$ cat /etc/apt/apt.conf.d/20auto-upgrades 
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

そのファイルがあり、それでも機能しない場合は、パッケージを元に戻している原因を特定してみてください。私はOrigins-PatternよりもAllowed-Originsを好んでいます。これはドキュメントとは異なりますが、私にとってはうまくいきました:

$ vim /etc/apt/apt.conf.d/50unattended-upgrades
# You need to customize configuration

以下は、50unattended-upgradesの重要な「パターン」コンポーネントの例です。

Unattended-Upgrade::Origins-Pattern {
        // Codename based matching:
        // This will follow the migration of a release through different
        // archives (e.g. from testing to stable and later oldstable).

        // 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=Ubuntu,a=stable";
//      "o=Ubuntu,a=stable-updates";
//      "o=Ubuntu,a=proposed-updates";
        "Origin=Ubuntu,codename=${distro_codename}";
};

これはリポジトリに基づいて制限しない例です:

Unattended-Upgrade::Origins-Pattern {
      "o=*";
}

Origin-PatternsまたはAllowed-Originsのいずれかのみが必要で、両方は必要ありません。これはより明確で、Debianの 無人アップグレード のドキュメントに記載されています。

これだけを有効にしてみてください。これはセキュリティ更新プログラムのみです。それが機能することをテストし、他のパターンを1つずつ追加して、それぞれを追加して、更新されたそれぞれがドライランテストを中断しないことを確認します。

混在している場合は、Ubuntuを指定し、Debianシステム用に完全に異なる構成ファイルを作成することもお勧めします。


更新を妨げる可能性のあるパッケージを保持していないことを確認してください。

$ Sudo apt-mark showhold

更新を正常にインストールできること、またはaptが各リリースタイプを正しく優先順位付けするように構成されていることを確認してください。

$ cat /etc/apt/preferences.d/custom
Package: *
Pin: release a=bionic
# Only explicit installs
#Pin-Priority: 1001
# Explicit and dependencies
Pin-Priority: 900

Package: *
Pin: release a=testing
Pin-Priority: 399

Package: *
Pin: release a=unstable
Pin-Priority: -10

一部の更新ではマシンの再起動が必要になるため、手動で実行するか、更新で必要なときにaptが特定の時間にマシンを再起動できるようにする必要があります。

2
earthmeLon

同様の質問が以前に尋ねられました:

受諾回答は次のように述べています。

答えのほとんどは、/var/log/unattended-upgrades/unattended-upgrades.logにある無人アップグレードログファイルにあります

次に例を示します。

2018-01-08 06:17:51,770 INFO Starting unattended upgrades script
2018-01-08 06:17:51,771 INFO Allowed origins are: ['o=Ubuntu,a=xenial-security']
2018-01-08 06:18:07,765 INFO No packages found that can be upgraded unattended and no pending auto-removals

その真ん中の行「許可された起源」を見てください。それはソフトウェアリポジトリを意味します。唯一のソースは-securityです。アップグレードなし、バックポートなし、PPAなし、サードパーティのリポジトリなし。

つまり、この例の無人アップグレードは、セキュリティアップグレードを提供するonlyです。他には何もありません。

許可されたオリジン(リポジトリ)を追加するには、ソフトウェアと更新のコントロールパネルを使用するか、/etc/apt/apt.conf.d/50unattended-upgradesにある無人アップグレード構成ファイルを編集します。

残りの答えは、Xenial(16.04)が2歳であることです。古いソフトウェアの新しいセキュリティ更新が少なくなります。


追加の読み:

2

パッケージのアップグレードを妨げている可能性のあるパッケージを保持するようにマークしたかどうかをチェックする価値があります。

Sudo apt-mark showhold
1
Ketan Patel