Pacman -R:循環依存関係の削除中にパッケージエラーが発生しました。

Pacman -R:循環依存関係の削除中にパッケージエラーが発生しました。

一部のパッケージを削除しようとすると、次のエラーが発生します。

╰─ sudo pacman -R avahi               
[sudo] password for laith: 
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: geoclue: removing avahi breaks dependency 'avahi'
:: gvfs: removing avahi breaks dependency 'avahi'
:: libcups: removing avahi breaks dependency 'avahi'
:: libdmapsharing: removing avahi breaks dependency 'avahi'

私が見ると、これは間違っているようです。 Pacmanは私が削除したいパッケージの依存関係を壊したくありません。私が何かを間違って理解していますか?それともパックマンに大丈夫だと言える方法はありますか?

答え1

Arch Linuxのパッケージはしばしば他のパッケージへの依存関係を宣言します。 1つのパッケージは、共有オブジェクト(名前の後にサフィックスが付いたファイル)など、1つ以上の機能のために別のパッケージで必要かつ提供されるためです.so。これは、他の多くのGNU / Linuxディストリビューションに共通して適用される依存関係ツリーの概念です。

発生したエラーは循環依存性を表しません。pacman実際、出力には4つのパッケージが依存する機能を削除しようとしていることが示されています。たとえば、メッセージは次のことをgvfs: removing avahi breaks dependency 'avahi'意味します。

  • このavahiパッケージはこのavahi機能を提供します。
  • パッケージは機能gvfsによって異なりますavahi。そうしないと、提供された機能がgvfs正しく機能しません。
  • avahi現在、この機能を提供する唯一のパッケージであるパッケージを削除しようとしていますavahi
  • 依存関係ツリーの破損を防ぐために、パッケージのpacman削除は禁止されていますavahi

通常、パッケージ名は機能名と一致しますが、いくつかの例外があります。例えば、beanshelljava-runtimeパッケージは、次の設定機能によって異なります。jre8-openjdkjre10-openjdkそして他のいくつかのパッケージ。

潜在的な依存関係ツリーの中断が見つかった場合は、pacmanそれを処理する方法をパッケージ管理者に知らせる必要があります。次のオプションが表示されます。

  • 引数を指定して、削除する機能に依存するパッケージとすべてのパッケージを削除するようにpacman指示します。avahi--cascade
    $ sudo pacman -R --cascade avahi
  • 引数を2回指定して依存関係ツリーを完全に無視しますpacman--nodeps
    $ sudo pacman -R --nodeps --nodeps avahi

引用:

関連情報