
複数のディストリビューションで壊れたパッケージを修復する方法について多くの回答を見てきましたが、これは非常に役立ち、問題を解決しているようです。しかし、パッケージがどのようにして壊れるのかが気になります。
コマンドを使用するパイプラインのトラブルシューティングを行っていたのですapt-get install
が、依存関係の一部をインストールできませんでした。何度か再試行した後、パイプラインを機能させることができました。しかし、解決策を検索したところ、apt-get に非常に便利な--fix-broken
フラグがあり、問題が解決したことがわかりました。しかし、疑問が残ります。なにが問題だったの? 私にとって解決された問題を正確に見つける方法がわかりません--fix-broken
。
man ページを見ると、次のような一般的な情報が記載されています。
Fix; attempt to correct a system with broken dependencies in place. This option, when
used with install/remove, can omit any packages to permit APT to deduce a likely
solution. If packages are specified, these have to completely correct the problem. The
option is sometimes necessary when running APT for the first time; APT itself does not
allow broken package dependencies to exist on a system. It is possible that a system's
dependency structure can be so corrupt as to require manual intervention.
現時点でシステムがインスタンス化されているパイプラインの場合、破損の原因となったパッケージに何が起こったのでしょうか? このフラグの動作について詳しく知っている人はいますか? 特に、パッケージが破損する仕組みについて教えてください。
答え1
典型的な破損はapt install --fix-broken
依存関係の欠落です。通常の方法はそれdpkg
直接パッケージをインストールするために使用する場合、dpkg
依存関係が不足しているかどうかはわかりますが、不足している依存関係を取得できないため、パッケージは部分的にインストールされた状態になります (インストールされますが構成されません)。apt install --fix-broken
壊れた依存関係を解決し、必要なパッケージをインストールします。または、依存関係を解決できない場合は、完全に壊れたパッケージを削除します。
もし、あんたがは直接使用する場合dpkg
は、通常は を使用する方が適切ですapt install
。ローカル パッケージを指定すると、インストール中に依存関係が解決されます。
答え2
パッケージとは、依存関係のリストを持つソフトウェアの一部にすぎません。システムに非標準のインストール (たとえば、ソースからビルドされたもの) がある場合、または他のインストールを壊さないように特定のバージョンのパッケージを固定している場合 (「dpkg hold」または「dnf --exclude」を使用)、依存パッケージのすべてに異なる状態を要求するパッケージをインストールしようとすると失敗し、「壊れた」パッケージになります。
パッケージやシステムの状態に問題がないかもしれないことに注意することが重要です。元のパッケージは手動でコンパイルしたもので問題ないかもしれませんが、期待されるそれは壊れているように見えます。