【Apt】Linuxで「壊れたパッケージが保持されています」エラーを修正する3つの方法
Linuxでパッケージをインストールしようとした際に、「E: Unable to correct problems, you have held broken packages(問題を修正できません。壊れたパッケージが保持されています)」という厄介なメッセージが表示され、インストールがそこから先へ進まなくなることがあります。このエラーは、apt-getでパッケージを管理するあらゆるLinuxディストリビューションで発生する可能性があります。Debianをはじめ、Linux MintやUbuntuの各種派生ディストリビューションも含まれます。
原因は依存関係の破損です。これは、インストール済みのパッケージが、まだインストールされていない別のパッケージに依存している場合に起こる副作用です。apt-getはインストール時に必要なコンポーネントへアクセスできないことを検知すると、処理を続行できなくなります。幸い、いくつかの基本的なコマンドライン操作とGUIツールを使えば、この問題は短時間で解決できます。
方法1:dpkg --configureで壊れたパッケージを修復する
まずターミナルで次のコマンドを実行してみてください。
sudo dpkg --configure -a
これにより、未インストールのパッケージによって生じたシステム上の壊れた依存関係を検出・修復する自動プロセスが開始されます。不足しているパッケージは基本的にユーザーの操作なしで自動的にインストールされますが、インストールを求めるプロンプトが表示された場合はyキーを押して応答してください。
壊れたパッケージが見つからなければ、何も出力されません。Xubuntuのクリーンなテスト環境で実行したところ、エラーは検出されませんでした。しかし、「Unable to Correct Problems, You have Held Broken Packages」のエラーが発生している環境では、インストールが必要な複数のパッケージが見つかるはずです。実行後は、続けて次のコマンドを試しましょう。
sudo apt-get install -f
このコマンドは依存関係リストを構築し、パッケージの状態情報を読み込みます。「0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded(アップグレード0件、新規インストール0件、削除0件、保留0件)」というメッセージが表示されれば、壊れた依存関係が最初から存在しなかったか、直前のコマンドですべて修復されたことを意味します。
この状態になったら、sudo apt-get clean && sudo apt-get updateを実行し、さらにsudo apt-get upgradeでシステム全体のパッケージを最新化しましょう。問題が長期間放置されていた場合は、更新に時間がかかることがあります。
方法2:dist-upgradeコマンドを使う
「some packages have been held back(一部のパッケージが保留されています)」というメッセージが表示され、前述のコマンドを正常に完了できなかった場合は、次のコマンドで残りのパッケージをインストールします。
sudo apt-get dist-upgrade
dist-upgradeオプションは通常のアップグレード機能に加えて、新しいバージョンのパッケージに伴う依存関係の変更にも対応します。apt-getには独自の競合解決システムがあり、通常は重要度の低いパッケージを後回しにして、システムにとって重要なパッケージを優先的にアップグレードします。このコマンドを使えば、そうした保留中のパッケージも強制的に更新されます。
ただし、壊れたパッケージが検出されなければ、「何もアップグレードされず、新規インストールもない」という結果になるだけです。その場合は、改めてsudo apt-get upgradeを実行すれば、変更があった際に自動アップグレード処理が機能します。また、必要なパッケージの正確な名前がわかっているなら、手動で個別にインストールするのも有効です。
たとえば、音声合成機能を使いたいのにGNUStepランタイムコンポーネントが不足しているケースを考えてみましょう。この場合、次のように入力するだけで必要なパッケージを導入できます。
sudo apt-get install gnustep-gui-runtime
これはあくまで一例であり、「gnustep-gui-runtime」の部分はインストールしたい任意のパッケージ名に置き換えられます。apt-get標準を採用する最近のディストリビューションには数千規模のパッケージが用意されていますが、目的のパッケージ名さえ把握していれば、この方法で強制的にインストール可能です。
方法3:Synapticで壊れたパッケージを修復する
Synapticというグラフィカルなパッケージマネージャーを導入しているなら、GUIからも壊れたパッケージを修復できます。手順は以下のとおりです。
Synapticを起動し、上部メニューの「編集(Edit)」ドロップダウンを開きます。メニュー内に「壊れたパッケージを修復(Fix Broken Packages)」という項目があるので、それを選択してください。壊れたパッケージが少なければ処理はすぐに終わりますが、多数のエラーが検出された場合は実行に時間がかかることがあります。
すべての処理が完了すると、画面下部のステータスバーに「Successfully fixed dependency problems(依存関係の問題を正常に修復しました)」というメッセージが表示されます。
これで、通常どおりパッケージの更新やインストールが行えるようになります。多くのユーザーは、すでにSynapticで作業していた場合にこの方法を使いますが、必要になったときにいつでも利用できる便利な機能です。修復後はSynapticを閉じてターミナルでの作業に戻ってもよいですし、そのままGUI上で操作を続けても問題ありません。
-
UDFボリュームをUbuntuにマウントする方法:ステップバイステップガイド
UDF(Universal Disk Format)とは?Universal Disk Format(UDF)は、コンピューターのデータ保存に関するISO 13346およびECMA-167のベンダーニュートラルな規格です。実務では主にDVDの作成に使用されますが、内蔵ディスクをUDFでフォーマットすること自体は何の制約もありません。より実用的な用途としては、CD-RWやDVD-RW/DVD+Rなどの光学メディアに採用されており、ユーザーがファイルを自由に追加・削除できるようになっています。さらに、一部の業務用ハイエンドデジタルビデオカメラでは、やや特殊なDVD-RAM形式が使用されることもあり
-
Linuxで全ユーザーアカウントを素早く一覧表示する方法
Linuxシステムに単一のユーザーアカウントでログインする方法はご存じでしょうし、rootアカウントについてもよくご存じかと思います。しかし、システム上に存在するすべてのアカウントを一覧表示できるシンプルなツールをお持ちの方は少ないのではないでしょうか。幸い、たった1つのコマンドラインテクニックだけで全リストを表示できます。もちろん、そのためにはまずコマンドラインを起動する必要があります。Super + T または Ctrl + Alt + T を押して、グラフィカルなターミナルを起動しましょう。Ubuntu Unity Dashで「Terminal」と検索したり、KDEアプリケーションメニュ