web-dev-qa-db-ja.com

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

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

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

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

864
jfoucher

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

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

注意深い解決策1:

Pablo's answer ごとに、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は非常に危険ですアップグレードとは異なり 複雑な依存関係の状況を解決するためにパッケージをremoveする場合があります。あなたとは異なり、APTは、これらの追加と削除が破壊をもたらす可能性があるかどうかを知るほど十分に賢いわけではありません。

したがって、「慎重な解決策」が機能しない場所にいる場合は、dist-upgrademayが機能する可能性がありますが... APTについてもう少し詳しく説明し、ケースバイケースでパッケージをインストールおよび削除することで依存関係の問題を「手動で」解決します。

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

887

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

The following packages have been kept back:

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

apt-get install <list of packages kept back>

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

497
user88285

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

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

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

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

Sudo aptitude

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

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

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

173
mudy

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

Sudo apt-get --with-new-pkgs upgrade

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

apt command友好的な代替 to apt-get )このオプションを共有します。

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

141
Pablo Bianchi

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

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

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

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

33
jbowtie

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

Sudo aptitude safe-upgrade

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

man aptitudeから:

安全なアップグレード

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

23
Afilu

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

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

編集:

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

21
txwikinger

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

実行する場合:

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

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

これは私のために働いた

Sudo aptitude full-upgrade
8
Singh

バージョンがわずかに異なる場合、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は更新します。

6

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

それを解決するために、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に関連しています)

4
crysman

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

3
Kazark

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

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

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

2
Elliptical view

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

apt-get install --reinstall libjpeg-progs

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

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

2

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

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

Sudo apt-get --purge remove mysql-utilities

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

Sudo apt-get -f install

結果-すばらしい!その後、この新しいバージョンのパッケージを正しくインストールしました。 enter image description here

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

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

1

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

Sudo apt full-upgrade

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

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

1
l --marc l

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

1
Johnny