「以下のパッケージは保存されています。」なぜ、どのように解決するのですか?


878

GIMPの開発バージョン用にPPAリポジトリを追加しましたが、次のエラーが表示されます。

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

現在のバージョンの代わりに最新バージョンを使用できるように、なぜ、どのように解決できますか?


17
厳密に言えば、これはエラーではなく警告です。
カザーク

回答:


905

debian-administration.orgの記事によると、

アップグレードを実行するために新しいパッケージをインストールする必要があるように、インストールしたパッケージのいずれかで依存関係が変更された場合、「保持」としてリストされます。

慎重な解決策1:

パーパブロの答え、あなたが実行することができsudo apt-get --with-new-pkgs upgrade、それが保管バックパッケージをインストールします。

これには、キープバックされたパッケージを「手動インストール」としてマークしないという利点があります。これにより、ユーザーの介入が強制される可能性があります(コメントを参照)。

Pabloのソリューションがうまく機能する場合は、賛成してください。そうでない場合は、問題点をコメントしてください。

慎重な解決策2:

慎重な解決策は実行することsudo apt-get install <list of packages kept back>です。ほとんどの場合、これにより、正常にアップグレードするために必要なものがキープバックパッケージに提供されます。

積極的なソリューション:

より積極的な解決策は、実行することですsudo apt-get dist-upgrade。これにより、これらの新しい依存関係が強制的にインストールされます。

しかしdist-upgrade 、非常に危険です。アップグレードとは異なりパッケージを削除して複雑な依存関係の状況を解決する場合があります。あなたとは異なり、APTはこれらの追加や削除が破壊をもたらすかどうかを知るほど十分に賢いわけではありません。

ですから、「慎重な解決策は」動作しない場所で自分自身を見つける場合dist-upgrade 動作する...しかし、あなたはおそらくインストールして除去することにより、APTについてもう少し学習し、「手で」依存関係の問題を解決する方がいいでしょうケースバイケースでパッケージ。

車を修理するようなものだと考えてください。時間があり、レンチを手元に置いておくと、自分で読んで修理をすることで安心できます。運がよければ、いとこdist-upgradeと一緒に車を降ろして、彼女が自分のものを知っていることを願うことができます。


180
これは受け入れられている回答のニーズであるため、dist-upgrade以下の他の回答の多くが指摘しているように、安定したシステムでの使用について警告するために更新する必要があります。個人的に私は昇進必要簡素/安全な答えがあると思います:<PKGSのリスト>インストールapt-getの
のCas

7
Cas、安定したシステムでdist-upgradeを実行するのは危険だということを付け加えるべきでしょうか?なぜまさに危険なのでしょうか?(正直なところ、すべてのことをよく知りません。)
マイケルクレンショー

17
dist-upgradeについてもう少し詳しく説明するServer Faultの回答があります。私は、ユーザーが期待する/望んでいるものを超えてシステム全体をアップグレードする可能性があることを明らかにする価値があると思います(それ自体は危険ではありません)。
Cas

19
パッケージsudo apt-get dist-upgrade削除できることに注意してください。そのため、を実行するときは、同意する前に行われる変更のリストを常に検査するのが最善sudo apt-get dist-upgradeです。
エリアケイガン

6
@EliahKagan apt-get upgradeパッケージを削除することさえできますか?そうしないと、バージョンの競合が発生する場合に常に実行されます。llvm3.6対を考えてくださいllvm3.6v5(「v5」はでコンパイルされたことを意味しますgcc 5)。これら2つを共存させることはできません。どちらか一方のみをシステムに保持できます。そのdist-upgradeため、一部のパッケージも削除される場合がありますが、それだけdist-upgradeではありません。特定の状況でupgradeは、同様に。
構文エラー

500

コマンドapt-get upgradeからメッセージを受け取るたびに

The following packages have been kept back:

次に、ディストリビューションアップグレードを実行せずに、キープバックされたパッケージの1つまたはすべてをアップグレードするには(dist-upgrade正しく覚えている場合はこれが行われます)、次のコマンドを発行します。

apt-get install <list of packages kept back>

これにより、未解決の問題が解決され、他の回答で説明されているように、追加パッケージなどのインストールが要求されます。


3
パッケージがこのように戻され、手動apt-get upgrade <list of packages>でやり直した場合apt-get upgrade、必要に応じて問題のパッケージがリストされ、apt autoremoveそれらを削除するために使用できるようにapt-get upgradeなります。控えめに...非常に奇妙な。何かご意見は?
cram2208

apt-get installひどい依存関係の状況を解決するために必要なときにパッケージを削除しますか、またはapt-get removeアップグレードプロセスのその部分を達成するために別のコマンドを実行する必要がありますか?
マイケルクレンショー

@ cram2208これは予想される動作だと思います。「自動的にインストールされ、[...]不要になった」パッケージは、アップグレードされたパッケージの以前のバージョンであり、現在は不要です。apt autoremove次に、これらの未使用の依存関係を削除します。
アレックス

3
アップグレードのために新しいパッケージをインストールする必要がある場合、パッケージは「保持」されます。:最初の使用を検討してsudo apt-get --with-new-pkgs upgradeと思われる方は、パッケージがインストールされ、手動でマークする原因の影響を持っていない
リットル--marcリットル

@ mac9416はい、できます。
ジャーノ

174

apt-get dist-upgrade 安定した環境には危険です

  1. source.listの設定が間違っていると、破損したubuntuになります。
  2. アプリケーション全体を必要としないバージョンにアップグレードする場合があります。

ユースケース:カーネルのアップグレードを控え、単にカーネルをアップグレードしたいだけで、ディストリビューション全体をアップグレードしたくない。

保持されたパッケージを処理するより良い方法:

sudo aptitude

パッケージを保持している場合は、リストの上部にアップグレード可能なパッケージが表示されます。

  • そのリストで+を押す
  • gを2回押す
  • 尋ねられたらdebconfに答える
  • Returnキーを押して続行します
  • Qを押す
  • はいを押します

保持されたバックパッケージがインストールされています。


34
apt-get dist-upgradeに悪いリポジトリがある場合にのみ危険です/etc/apt/sources.list*すべてのパッケージをdist-upgradeアップグレードすることに注意してください。ただし、デフォルトのリポジトリでは問題ありません。いない使用して、あなたがセキュリティアップデートを見逃す可能性があるため、危険である可能性があります。dist-upgrade
Flimm

6
apt-get dist-upgradeでき取り除くだけでなく、パッケージを追加するが、それは本当に危険ではありません。あらゆるパッケージのインストールコマンドは、重大な損傷を引き起こす可能性がありますあなたはあなたの中に問題がある場合はsources.list、ファイルを!通常のapt-get upgradeコマンドは、有効なソフトウェアソースからパッケージをインストールします。dist-upgradeこのように一意ではありません。さらに、バグ831768が修正されていないリリースでaptitudeは、少なくともamd64で何らかの操作を実行するために使用することは、実行するよりもはるかに危険です。apt-get dist-upgrade
エリアケイガン

私にとっては、シナプスを開いてパッケージのアップグレードを強制する方が簡単でした(Xが実行されているローカルマシン)。何らかの理由で、シナプスで説明した場所にはまったく現れなかったようです。
djvs

3
またsudo aptitude safe-upgrade
msanford

146

このUnix SEの答えを試さない理由:

sudo apt-get --with-new-pkgs upgrade

これにより、新しいパッケージをインストールできます。どのパッケージがインストールされるかを知らせ、実際にインストールを行う前にプロンプ​​トを表示します。

aptコマンド優しい代替するにはapt-get、このオプションを共有します)。

apt install <pkg>代わりに使用すると、pkgが「手動でインストールされた」とマークされます!! 「自動インストール」として再度マークするには、使用しますapt-mark auto <pkg>(サブコマンドも参照showmanual)。この回答の詳細。


20
+1は、パッケージに手動でインストール済みのマークを付けるという副作用がないためです。
ctrl-alt-delor

1
上記の私のコメントを読んだ人への注意:手動でインストールされたとマークする副作用がないことが良いことです。私はこの答えが好きです。
ctrl-alt-delor

1
はい。apt-mark auto <pkg>パッケージを自動的にインストールされたものとしてマークするためにのみ必要です(ここではmanページ)。
パブロ

11
なんらかの理由でsudo apt-get --with-new-pkgs upgrade、パッケージが「保持された」とまだ表示されます。エラーメッセージはありません。
フランクリンゆう

2
それを追加したいのは、最新の多くのdebian 9.6サーバーインスタンスで、これが物事を壊すことのない絶対的に最も安全なソリューションであったことです。パブロ、ステージング環境で他のオプションを前もって幸運にもテストしており、--with-new-pkgsを含めることで多くのサーバーをセキュリティ標準まで管理できたため、一般的な将来のパッケージ管理の結果がよりクリーンになりました。本当に、このUNIX SEの答えは支持されるべきです!
ジュリアス

34

通常、このメッセージが表示される理由は2つあります。

プログラムを(を介してsudo apt-get upgrade)アップグレードすると、パッケージが追加または削除される場合、プログラムは保留されます。sudo apt-get dist-upgradeこの場合は、追加のプログラムを追加または削除することを提案する場合に使用できます。

これは非常に一般的であり、通常は問題ではありません。時折(特にUbuntuアルファ版の場合)、dist-upgrade他の多くのプログラムを削除するように提案されますが、その場合はおそらくキャンセルする必要があります。

プログラムが利用できないパッケージまたはバージョンに依存している場合、プログラムは保留されます。パッケージは基本的にアンインストール可能であるため、この状況で待つ以外に何もできません。これは、パッケージが順番どおりにリポジトリに追加されたとき、パッケージの名前が変更されたとき、またはパッケージが仮想パッケージの提供を停止したときに発生します。


5
保持されたパッケージにインストールできない依存関係が必要かどうか、または他のパッケージが依存しているために保持されているかどうかを判断する方法はありますか。多くの保留パッケージがあり、これらのケースの両方が私のシステムに当てはまると思います。
ジェイク

おかげで、2番目の理由は私の問題でした。それapt-get dist-upgradeをインストールすることさえ拒否しました。aptitudeでパッケージを検査したところ、利用できないパッケージに依存していることがわかりました。私は待つ必要があると思います。
-jlh

23

また試すことができます:

sudo aptitude safe-upgrade

full-upgrade元々dist-upgradeという名前だった」よりも安全です。「パッケージは未使用でなければ削除されない」からです。

からman aptitude

安全なアップグレード

インストール済みパッケージを最新バージョンにアップグレードします。インストールされたパッケージは、使用されていない限り削除されません/.../現在インストールされていないパッケージは、-no-new-installsコマンドラインオプションが提供されない限り、依存関係を解決するためにインストールされます。


21

これらのパッケージをインストールすると依存関係の不整合が発生するため、ほとんどの場合、これらのパッケージは差し控えられています。これは、現在開発中のppasでアーカイブを使用しているため、または使用するミラーが完全に更新されていないために発生する可能性があります。

最後のケースでは、依存関係が解決されてから次回インストールされるのを待ちます。

編集:

別の可能性があります。パッケージが保留されている場合、またはパッケージが固定されている場合、パッケージが保留される可能性があります。


彼がapt-get upgradeまたはapt-get dist-upgrade(alt。aptitudeと同等)を実行したことを何も知らずに、その可能性に基づいて何をしますか?
-andol

これは、サポートに関するご質問やバグの中で最も発生して問題となっている
txwikinger

同意した。おそらく待って、apt_preferencesを確認する必要があります。これは、利用可能なパッケージの依存関係が非常に急速に変化している開発アーカイブによって引き起こされることがよくあります。彼らが落ち着くまで待ってくださいdist-upgrade。そうする必要はまったくありません。それでもやりたい場合はdist-upgrade、インストールする新しいパッケージと削除するパッケージを見てから先に進んでください。
ウマン

私は、メッセージのdist-upgradeを使用して「バックまま」を取得ので、これは私の場合です
Postadelmaga

この問題の原因がaptプリファレンス(固定)のmessupである場合、保存されたパッケージの再インストールが助けになったことがわかりましたapt-get install --reinstall <packages>
タニウス14

9

これは通常、パッケージに依存関係が追加されており、アップグレードでは許可なく依存関係が追加されないためです。

実行する場合:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

次に、新しいバージョンを新しい依存関係とともにインストールする必要があります。


dist-upgradeのコミットメント(リスク)なしで特定のパッケージ(およびその依存関係)をアップグレードします。
ジョン・ミー

8

これは私のために働いた

sudo aptitude full-upgrade

aptitude upgrade私のためにさえ働いた。
Bibhas

Ubuntu 14.04私は使用していますが、aptitudeコマンドラインはありません
アーメドハンディ

apt-get dist-upgrade同じメッセージをくれましたが、これで解決しました。別のパッケージのアップグレードを壊していたパッケージがありました。私はインストールしたものを必要としなかったので、aptitude full-upgrade他のすべてをアップグレードできるようにそれを削除するオプションを与えました。
-f.ardelian

6

バージョンがわずかに異なる場合、aptitudeはパッケージのアップグレードでより良い仕事をすることがわかりました。私はこのような状況がありました:

me@compy:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

これにより、apt-getは更新を保留しましたが、aptitudeはそれを問題なく更新しました。パッケージを更新する必要があるかどうかを判断するためにどのアルゴリズムが使用されているかわかりません。これら2つは同じバージョンで、異なる「修飾子」のみを持っていると思います。しかし、いずれにしても、apt-getは更新しませんが、aptitudeは更新します。


4

私の場合、保留されたパッケージは、linux-headersとkernelに関連したパッケージでした。通知領域に赤い感嘆符が付いていて、パッケージを更新できないという問題を解決しようとすることで、私はこれに至りました。

それを解決するために、dist-upgradeも手動のapt-get install xxxも使用する必要はありませんでした。

私がやったことや助けたことは、シンプルできれいです。

sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade

Grubの更新とその構成を手動で確認する必要がありました。

その後、しばらくの間コンピューターを操作したところ、最終的にカーネルと関連する「Ubuntuベース」セクションを含む標準の更新ダイアログが再び表示されました。更新は問題なく実行され、保留されたパッケージはもう表示されません。

また、カーネルの更新を含む* buntuの更新は休止状態に敏感であることを念頭に置くことが非常に重要です。この問題は何度か発生し、マシンを再起動して上記の手順を実行することで常に解決します。

おそらくこれで十分でしょうか?!

(ここに記載されている状況は、2015年12月末のXubuntu 15.10に関連しています)


3

新しいカーネルがリリースされたときに、この問題に遭遇しました。(おそらく、不安定な更新が有効になっているためです。)インストールを行う最も簡単な方法は、Ubuntuのグラフィカルインストーラー(update-manager)を使用することでした。


2

シナプスがハングしているように見えたため、シナプスを使用してこの問題に遭遇しました。これを修正するには、再起動して再試行しました。

その後、パッケージの一部として、インストール後の指示が記載された有益なメッセージを発見しました。

メッセージを読んだ後に「詳細」を押してから「q」を押して終了する必要があり、その後は正常に進みました。


2

これは、保持されたパッケージを再インストールする正しい方法のように見えます。

apt-get install --reinstall libjpeg-progs

少なくともこれはlibjpeg-progs、Ubuntu 14.04から16.04にアップグレードした後にスタックしたときにうまくいきました。他の保存されたアプリ、例えばでも同じことができると確信していますgimp

ソース:https : //ubuntuforums.org/showthread.php?t=2321702&p=13476183#post13476183


1
なし--reinstallでもできます。
ジャルノ

面白いのは、libjpeg-turbo-progsパッケージが削除されることです。
ジャルノ

1

実際、必要なスイッチはdselect-upgrade、関連する特定のパッケージセットの依存関係をインストール/削除するスイッチです。


1

私はすべての投稿を読みましたが、多くの興味深い説明があることがわかりました。私はそれらのすべてを試していましたが、完全に結果がありませんでした。mysql-utilitiesに問題があり、アップグレードできませんでした。更新はシステムによって提案されました。だから、私はそれを行うためのいくつかの手順を示したいです。もちろん、前述の投稿のすべてをしばらく繰り返します。ここに私の間違いがあります。はい、すでに存在する投稿で見つけましたが、次に何をすべきでしょうか? ここに画像の説明を入力してください

次のステップは次のとおりです。

sudo apt-get --purge remove mysql-utilities

下の画像で確認できる結果。パッケージを削除し、コマンドでこれを確認します。

sudo apt-get -f install

結果-すばらしい!その後、この新しいバージョンのパッケージを正しくインストールしました。 ここに画像の説明を入力してください

このように、他のパッケージを使用して同じ手順を実行できるため、より多くの新しい人々に役立つと思います。

一度、他の投稿をいくつかの場所で繰り返したとき、すみません。


5
端末のテキストにはスクリーンショットを使用しないでください。スクリーンショットを使用すると、Googleで検索できなくなり、一部の人には読めなくなります。代わりに、ターミナルテキストを回答に貼り付け、そのテキストを選択{}し、エディターのボタンを押して適切にフォーマットします。
チャイT.レックス

@ ChaiT.Rex発言をありがとう、私は将来の意見でそれを取るでしょう。
ヴァシルリャシュケビッチ

1

Ubuntu 18.04は、のapt代わりに使用できる新しい、合理化された構文を提供しますapt-get

sudo apt full-upgrade

sudo apt upgradesources.list(5)で設定されたソースから現在システムにインストールされているすべてのパッケージの利用可能なアップグレードをインストールするために使用されます。依存関係を満たすために必要な場合、新しいパッケージがインストールされますが、既存のパッケージは削除されません。パッケージのアップグレードでインストール済みパッケージの削除が必要な場合、このパッケージのアップグレードは実行されません。

sudo apt full-upgrade アップグレードの機能を実行しますが、システム全体をアップグレードする必要がある場合、現在インストールされているパッケージを削除します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.