ここ 1 週間ほど、UI から自動更新を実行すると、上記のメッセージが表示されます。メッセージには、「認証されていないソースからのパッケージのインストールが必要です」と続きます。 が推奨されていると読みましたapt-upgrade
。しかし、なぜこれが意図された解決策なのかという説明は見つかりませんでした。
非常に安定したシステムに手を加える前に、なぜ今すぐに自動更新リリースが必要なのかという点について、自動更新リリースのプロセスを理解したいと思いますapt-upgrade
。過去数年間、私のシステムでこの更新が必要になった記憶はありません。
Ubuntu 14.04 LTS。
ありがとう!
答え1
なぜこのようなことが起こるのかを理解するには、まず標準の apt (つまり、優先順位が設定されていない apt) がどのように動作するかを理解する必要があります。 を使用してアップグレードを実行するとしますapt upgrade
( に関する情報が見つからないため、これが apt-upgrade の意味であると思われます)。まず、apt はインストールされているすべてのソフトウェアのローカル バージョンをリポジトリ内のリモート バージョンと比較し、パッケージのアップグレードが必要かどうかを確認します。これを説明するために、1 つのパッケージをアップグレードする必要があるapt-upgrade
という架空のシナリオを作成しましょう。sayhello
以下は架空の変更ログです:
sayhello 1.1 now depends on libhello (>= 1.0) to print "hello."
ここで、sources.list に 2 つのソースがリストされていて、1 つは標準の Ubuntu リポジトリで、もう 1 つは であるとしますJim's amazing taco repo
。
Jim のリポジトリには次の 3 つのパッケージが含まれています。
jimplayer 2.5 (No depends)
jimsbetterhello 1.0 (Depends on libhello (>= 2.0))
libhello 2.0 (No depends)
少し前に jimplayer をインストールするためにこのリポジトリを使用しただけでしたが、その後 Jim が jimsbetterhello をリポジトリに追加することにしたようです。ここからが面白いところです...
Ubuntu のリポジトリでは互換性の理由から libhello 1.5 がまだ使用されています (一部のパッケージは新しい libhello バージョンではまだ動作しないため)
さて、 apt がアップグレードしようとするとsayhello
、難問にぶつかります。libhello
インストールできる のバージョンが 2 つあります。どちらを選択すればよいのでしょうか。デフォルトでは、 apt は最新バージョンのパッケージを選択します。doesn't conflict with other currently installed packages.
通常、このプロセスはユーザーには透過的ですが、サードパーティのリポジトリの GPG キーを追加していない場合、キーが変更されている場合など、sayhello
デフォルトの Ubuntu リポジトリからインストールした場合でも、libhello 2.0 は信頼できないパッケージとなり、apt はそのことを警告します。これは、apt がこれについて警告する可能性がある多くの異なる順列のうちの 1 つにすぎません。追加したサードパーティのリポジトリでのみ利用可能なパッケージが不足していることが原因である可能性もあります。最善の回避策は、デフォルトのリポジトリの優先度を高く設定し、信頼できるキーチェーンにキーが追加されていない不要なサードパーティのリポジトリを削除することです。