私は人々が満たされていない依存関係を持っていて、apt-getが次のような問題が何であるかを直接伝えていない場合を何度も見ました。
The following packages have unmet dependencies:
libgl1-mesa-dri:i386 : Depends: libdrm-intel1:i386 (>= 2.4.38) but it is not going to be installed
Depends: libdrm-nouveau2:i386 (>= 2.4.38) but it is not going to be installed
Depends: libdrm-radeon1:i386 (>= 2.4.31) but it is not going to be installed
Depends: libdrm2:i386 (>= 2.4.38) but it is not going to be installed
Depends: libglapi-mesa:i386 but it is not going to be installed
libgl1-mesa-glx:i386 : Depends: libdrm2:i386 (>= 2.3.1) but it is not going to be installed
Depends: libglapi-mesa:i386 (= 9.2.1-1ubuntu3) but it is not going to be installed
Depends: libx11-6:i386 (>= 2:1.4.99.1) but it is not going to be installed
Depends: libxcb-dri2-0:i386 (>= 1.8) but it is not going to be installed
Depends: libxcb-glx0:i386 (>= 1.8) but it is not going to be installed
Depends: libxcb1:i386 but it is not going to be installed
Depends: libxdamage1:i386 (>= 1:1.1) but it is not going to be installed
Depends: libxext6:i386 but it is not going to be installed
Depends: libxfixes3:i386 but it is not going to be installed
Depends: libxxf86vm1:i386 but it is not going to be installed
利用可能なものが見つかるまで、すべての依存関係を繰り返すことは痛みを伴うことに気づいていますが、apt-get install libgl1-mesa-dri:i386 libdrm-intel1:i386
この場合、パッケージの数は痛いでしょう。これを行うより簡単な方法はありますか?
答え1
最初にすべき合理的なことは、なぜ今やっていることをしているのか尋ねることです。これはオプションで行うことができます-o Debug::pkgProblemResolver=yes
。例えば
apt-get -o Debug::pkgProblemResolver=yes install libgl1-mesa-dri:i386 libdrm-intel1:i386
aptが発生しない場合、これらの問題をデバッグする標準的な方法は、エラーメッセージに記載されている各パッケージの利用可能なバージョンの優先順位番号を確認することです。これは一般的にapt-cache policy
。
たとえば、エラーメッセージの最初の部分のみを使用するには、次のようにします。
apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libglapi-mesa:i386
進行方法は、これが示す内容によって異なります。ただ実行することもしばしば便利です。
apt-cache policy
これにより、利用可能なすべてのパッケージソースとその優先順位番号が表示されます。この情報は通常、両方/etc/apt/sources.list
または両方に割り当てられます/etc/apt/sources.list.d
。
ここで助けを求める人は、まずこのコマンドの結果を投稿する必要があります。彼らの質問に。これは問題を識別するのに十分な情報かもしれません。
実生活の問題の例:
バックポートリポジトリを使用した後に満たされない依存関係:ユーザーはソースを含めましたが、
www.deb-multimedia.org
低い優先順位に固定していません。低い優先順位に固定せずにサードパーティのソースを含めないでください。デフォルトバージョンのパッケージを提供する適切に機能するリポジトリにはこれは必要ありませんが、www.deb-multimedia.org
Debianと互換性がないことが知られているため、一般的に不明なソースを信頼してはいけません。より一般的に言えば、リポジトリがシステムに適していないことがわかっている場合は、そのリポジトリをより低い優先順位に固定してください。たとえば、Debian stableのtest / unstableソースです
。満たされていない依存関係: ユーザーがシステムのデフォルトバージョンではなく、Pythonバージョンをインストールしました。当然、すべての地獄が解放されます。要点は、システムに適したパッケージバージョンのみをインストールする必要があることです。上で
apt-cache policy pkgname
言いましたね。dpkg/apt-getが別のパッケージをインストールして上書きしようとします。:ユーザーはプライマリ
dpkg
データベースが破損しているにもかかわらず、パッケージをインストールしようとします。倫理的にdpkg
問題があるというメッセージがパッケージに表示された場合0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not fully installed or removed.
パッケージデータベースに問題があります。他のものをインストールする前に問題を解決してください。機能しない場合は、問題を解決するための
apt-get -f install
措置を講じる必要があります。dpkg
答え2
あなたに役立つ多くの情報があります:
- まず、問題を引き起こしたコマンド全体を含めます。
次のパッケージに関する情報が含まれます。
apt-cache policy name-of-packages-involved
したがって、あなたの場合は最小値の出力があります
apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libgl1-mesa-glx:i386 libdrm-nouveau2:i386
。出力は
sudo apt-get check
また、sudo dpkg -C
1つを持つ可能性を高めることができます。sudo apt-get update
cat /etc/apt/sources.list{,.d/*.list}
場合によっては と の完全な出力が役立ちます。パッケージをインストールしたい場合は、why-not
aptitudeコマンドの出力から簡単に把握できます。aptitude why-not sysvinit-core i A systemd-sysv Breaks sysvinit-core
この問題を解決するために助けを求めるときは常にフル出力を含む提起されたすべての問題と同様に、この方法を使用すると解決策がさらに速くなります。