apt-get upgrade
の出力は次のとおりです。
The following packages have been kept back:
certbot python-acme python-certbot python-certbot-Apache python-cryptography python-openssl
これは何を意味するのでしょうか?私は行動を起こすべきですか?もしそうなら、何?
私は同じ問題を抱えています。 しない最初に
Sudo apt-get dist-upgrade
をします。とても重要です。
それはあなたのシステムを非常に不安定にし、プログラムがクラッシュする可能性があり、あなたはあなたのOSの多くの機能を失う可能性があります。
あなたはMUST各パッケージを個別にインストールします、しかしながら、その過程で他の依存関係も自動的にインストールされ、あなたの問題はほんの数分で解決されます。
次の解決策では問題はありませんでした。かなり早く簡単です。
apt list --upgradable
Sudo apt-get install package-name-here
apt list --upgradable
apt list --upgradable
と入力します。これが完了するまでに数分かかるだけです。
Sudo apt-get autoclean
Sudo apt-get update && Sudo apt-get dist-upgrade
この解決策がうまくいった場合は、正しい解決策が他の人にも利用可能になり、回答リストの一番上になるように、それを支持することを忘れないでください。
何らかの理由でこの解決策がうまくいかない場合は、以下のユーザーGAD3Rの回答を参照してください。これも良い解決策です。
ありがとう。
これは何を意味するのでしょうか?
The following packages have been kept back:
答えは ここ です
これは、何らかの理由でインストールされないこれらのパッケージの新しいバージョンがあることを意味します。考えられる理由は、壊れた依存関係(それが依存しているパッケージにはダウンロード可能なバージョンがない)または新しい依存関係(最後のバージョン以降、パッケージは新しいパッケージに依存するようになった)です。
行動を取るべきですか?
新しい依存関係をインストールしてパッケージをアップグレードするためにはdist-upgrade
を使う必要があります。
Sudo apt-get dist-upgrade
必要でなければ、dist-upgrade
を実行することで問題を解決できます。
壊れた依存関係を修正する
Sudo apt-get -f install
システムにインストールされなくなったパッケージをいくつか削除します。
Sudo apt-get autoclean
目的のパッケージを保留にします。
echo "<package_name> hold" | dpkg --set-selections
名前付きパッケージを再設定します。
dpkg-reconfigure <package_name>
まず上記のようにしてくださいいかなるプロダクションシステムもdist-upgradeしないでください!dist-upgradeはパッケージを "解決"し続けますが、これは間違いなくこの問題の解決策ではないシステムに与える影響を知らずに実行した場合、かなりの可能性がありますが、良い結果よりも深刻な結果を招きます。
パッケージをアップグレードするために追加のパッケージをインストールする必要がある場合は、Sudo apt-get upgrade
を実行するときに「元の状態に保たれます」。
上で述べたように、明示的にSudo apt-get install [paste kept back packages here]
を実行することでこれらの "保持された"パッケージを手動でインストールすることができますが、これはこれらのパッケージを "手動でインストール"としてマークします。
"保持された"パッケージを手動でインストールされたものとしてマークしないで "保持された"パッケージをアップグレードするために必要な追加のパッケージを自動的にインストールするにはSudo apt-get --with-new-pkgs upgrade
を実行してください。
私は私のブログにこの答えを含めました。あなたがこの リンク からそこに行くことができることを見たいのならば。
あなたが(apt-get upgrade
)をアップグレードしようとするとき、上記のエラーはUbuntuターミナルで非常に一般的です。これは通常、インストールした1つのパッケージの依存関係が変更されたために起こります。アップグレードするためには、それらも最初にアップグレードする必要があります。それでそれを解決することは非常に簡単です。あなたはこのエラーメッセージの下に保たれたそれらのパッケージを見ることができるでしょう。例として、私はリストに次のパッケージを見ることができます。
gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software
単にSudo apt-get dist-upgrade
と入力しないでください。保留中のすべてのアップデートがインストールされるため、非常に危険です。これにより、作業環境が非常に不安定な状態になる可能性があります。
したがって私の意見は有名なを使用することです
Sudo apt-get install [package]
エラーメッセージに表示されているパッケージであれば、[package]
を置き換えることができます。また、それらをリストのままにすることもできます(コピーして貼り付けるだけです)。私の場合の例として、私は入ることができます
Sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software
やりたい場合
Sudo apt-get dist-upgrade
何らかの理由で、単にsimulateオプション-s
(Sudo apt-get -s dist-upgrade
)を使ってパッケージのリストを調べるか、-s
オプションなしで実行を終了してから受け入れることができます。 (あなたは常にオプションいいえを選択することができます)
この記事 これが起こる理由をうまくまとめています:
アップグレードを実行するために新しいパッケージをインストールする必要があるように、インストールしたパッケージのいずれかで依存関係が変更された場合、「保持」としてリストされます。
これに対する解決策は、それらを明示的にインストールすることです
Sudo apt install [packages]
依存関係を満たすためだけでなく、自分で気にしない限り、これらのパッケージを自動的にインストールされたものとしてマークしたいでしょう。
Sudo apt-mark auto [packages]
そもそもこれが起こらないようにするには、
Sudo apt --with-new-pkgs upgrade
将来的にパッケージをアップグレードします。これにより、依存関係の変更に合わせて新しいパッケージをインストールできます。
最近のDebianセキュリティアップデートは、いくつかの新しい依存関係を導入しました。この場合、linux-image
パッケージはlinux-firmware
を必要とし始めました。そのため、それらはunattended-upgrade
によって抑制されインストールされませんでした。いくつかのテストと確認の後、私はそれらのパッケージを選択的にインストールすることができました。
apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')