問題を修正できません。壊れたパッケージを保持しています


216

10.04から12.04にアップグレードした後、別のパッケージをインストールしようとしています。たとえば、ia32-libsおよびskype(4.0)。

これらをインストールしようとすると、「問題を修正できません。壊れたパッケージを保持しています」というエラーメッセージが表示されます。

コマンドの出力:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

これを実行した後:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3
実際に試行しているコマンド(などsudo apt-get install ia32-libs)とそのコマンドからの出力を見せてくれると助かります。また、sudo apt-get dist-upgrade利用可能なアップデートは表示されますか?
-thomasrutter

3
私はあなたの質問の何が悪いのか分かりません、実際のエラーもあなたのタイトルに記載されているものも見ません。
Braiam


回答:


237

この特定のエラーメッセージは、パッケージを保持していることを示している場合がありますが、別の問題を示している場合もあります。

実際に保留されているパッケージのリストを取得するには、次を使用します。

dpkg --get-selections | grep hold

存在しない、または関連する外観がない場合、それはおそらく他の何かです。エラーメッセージの他に、そのコマンドからの完全な出力に他の手がかりがある可能性があるため、エラーメッセージを取得したときに試行していたコマンドの出力を慎重に確認してください。

トラブルシューティングの別の方法は、apt-getではなくaptitudeを使用してパッケージをインストールすることです。

sudo aptitude install <packagename>

Aptitudeは簡単にgiveめなくなり、他のパッケージの変更を伴う可能性のある解決策を見つけようとします。問題の詳細な説明とそれを修正するためのオプションが提供される場合があります。

場合によっては、aptitudeは要求を満たすために多数のパッケージを削除またはダウングレードするにはあまりにも熱心に-fなります。その場合、優先順位を変更して再試行し、要求したすべての変更ではない場合でも少数のパッケージを削除/ダウングレードするソリューションを考え出すのに役立ちます先に進むことができます:

sudo aptitude -f install <packagename>

6
パッケージの保留を解除する方法はありますか?:-)
ユージンファンデルメルウェ

6
それは別の質問です。
thomasrutter

59
ヒントは、apt-getよりもAptitudeの方が役に立ちました。
szx

9
注意すべきことの1つは、aptitudeを使用すると、システムにより多くの損害を与えやすくなる可能性があることです。たとえば、競合する依存関係のためにapt-getが何かのインストールに失敗すると、あきらめます。ただし、aptitudeは先に進むことを提案する場合がありますが、これらの競合を満たすために、またはパッケージをダウングレードするために、他のパッケージをすべてアンインストールします。あなたは単にそれが示唆していることを認識し、それが良いアイデアである場合にのみ先に進む必要があります。
thomasrutter

4
「保留」パッケージはメッセージとは関係ありません。ただ、それらを保持することで競合を回避した(インストール、アップグレード、ダウングレード、または削除ではない)だけです。
Braiam 14

33

それは私にも起こりました。私がやったことはsudo apt-get updateそれだけで、私の問題は修正されました。幸運を。


9

依存関係の欠落に関する同様のシナリオに遭遇しました。私の場合、ubuntu saucy salamander 13.10にcurlをインストールしようとしました...

エラーは、依存関係がcurl3ライブラリの以前のバージョンを必要とすることを述べました。

aptitudeを使用してcurlをインストールしようとすることで、以前のバージョンに低下させることができました。

不足している依存関係と理由(以前のバージョンのライブラリファイルが必要)に気付いたとき、応答方法にいくつかのオプションがありました... y// n/q

Yインストールを中止し、N別のオプションを探し、Q単に終了してそれ以上何もせず、壊れたパッケージを残します。

を選択しN、ライブラリファイルを以前のバージョンにダウングレードするオプションを提供しました。それが私がしたことであり、curlはエラーなしでインストールを終了しました。

  • インストール後にライブラリファイルを再度アップグレードすることを検討することもできますが、これまでのところはこれで十分です。

9

14.04の新規インストールでも同様のシナリオがありましたが、にファイルがリストされdpkg --get-selections | grep holdておらず、後には喜びがありませんsudo apt-get update

やった私のためにそれを修正する簡単でした

sudo apt-get autoremove

失敗したパッケージを再インストールしようとすると、うまくいきました。わーい!


4

同じ問題があった場合、他の回答(dpkg --get-selections | grep hold)からそのパッケージチェックコマンドを実行して、

tomcat7                                         deinstall
tomcat7-common                                  install

使用したのは " apt-get remove tomcat7-common"

その後、Tomcat 6をインストールできました(Tomcat 7を削除して、Tomcat 6をインストールしていました)。


「保留中」パッケージはメッセージとは関係ありません。競合を抑えるために(インストール、アップグレード、ダウングレード、または削除ではなく)
Braiam 14

フラグパージを追加します。apt-getremove --purge packet
Sergio Abreu

4

これらは、you have held broken packagesエラーを修正するための高速で簡単な方法です。

  • sources.listファイルを開いて、/etc/apt/sources.list現在使用しているUbuntuリリースとは異なるUbuntuリリースのソフトウェアソースがないことを確認します。sources.listに誤ったリリース行が見つかった場合は、sources.listファイルを開きます。sudoedit /etc/apt/sources.listその前に#文字を付けてsources.listの誤った行をコメントアウトし、sources.listファイルを保存して、実行sudo apt updateしてリストを更新します利用可能なソフトウェアパッケージ。

  • 選択して修正壊れたパッケージを Synapticパッケージマネージャでオプションを選択します。次のコマンドを実行してSynapticをインストールします。

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    オープンシナプスとシナプスを選択して、編集 - > 壊れたパッケージを修正して、繰り返して、[編集]を - > 壊れた修正パッケージ二度目。

    左ペインのSynapticで、下のスクリーンショットのマウスカーソルでマークされている[ カスタムフィルター ]ボタンをクリックします。左上隅のリストから、Brokenを選択します。中央のペインには、修復が必要な破損したパッケージがリストされます。

    Synapticで壊れたパッケージを表示する

    壊れたパッケージを1つずつ選択します。壊れたパッケージを選択し、ターミナルを開いてを実行します。このコマンドの結果は、破損したパッケージがデフォルトのUbuntuリポジトリからインストールされたか、他のソースからインストールされたかを示します。壊れたパッケージが他のソースからインストールされた場合、そのパッケージはそのソフトウェアソースとともに削除され、デフォルトのUbuntuリポジトリから同じパッケージの異なるバージョンに置き換えられる可能性があります。通常、これは、破損したパッケージを古いバージョンにダウングレードすることで修正することを意味します。apt policy <package-name>

  • このエラーメッセージが表示される場合:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    次のコマンドを実行します。

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • 破損したパッケージを手動で削除します。

    1. でパッケージを見つける /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. パッケージフォルダーを別の場所に移動します。

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. 次のコマンドを実行します。

      sudo dpkg --remove --force-remove-reinstreq <package>  
      

これらのすべての方法が機能しない場合、壊れたパッケージはオペレーティングシステムに深く埋め込まれているためにこれらの方法のいずれも効果を持たないことが原因である可能性があります。この深く埋め込まれた「何か」を探す最初の明白な場所は、のソフトウェアソースにあり/etc/apt/sources.listます。sources.listファイルをチェックして、壊れたパッケージエラーを引き起こしている可能性のある非標準の行が含まれているかどうかを確認します。標準のUbuntuのsources.listファイルは、この回答の sources.listファイルのように見えます。

sources.listから疑わしい行を削除する正しい方法は、#文字の前にコメントアウトすることです。次に、実行sudo apt updateして使用可能なソフトウェアのリストを更新します。


0

私にとっては、システムが更新されなかったため、上記のいずれも機能しませんでした。やった

Home Key > Software Updater > Install

システムを更新しました。その後、パッケージを通常どおりにインストールできましたapt


0

インストールxsaneに失敗した後、同じ問題を再ppaインストールしました。yochannahに起こったように、「にファイルがリストされdpkg --get-selections | grep holdておらず、後に喜びはありませんsudo apt-get update」。

apt-get私に与えたヒントは

xsane : Depends: libsane (>= 1.0.24) but it is not going to be installed

yochannahの回答のため、以前にインストールしたパッケージを削除する必要があると感じました。そのため、に関連するすべてのパッケージを手動で削除する必要sanexsane-commonありました。特に、およびlibsaneとしてインストールされていましたppa

したがって、以前にインストールしたものに注意し、片付けてください!

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