一部のパッケージを削除しようとすると、次のエラーが発生します。
╰─ 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
。
通常、パッケージ名は機能名と一致しますが、いくつかの例外があります。例えば、beanshell
java-runtime
パッケージは、次の設定機能によって異なります。jre8-openjdk
、jre10-openjdk
そして他のいくつかのパッケージ。
潜在的な依存関係ツリーの中断が見つかった場合は、pacman
それを処理する方法をパッケージ管理者に知らせる必要があります。次のオプションが表示されます。
- 引数を指定して、削除する機能に依存するパッケージとすべてのパッケージを削除するように
pacman
指示します。avahi
--cascade
$ sudo pacman -R --cascade avahi
- 引数を2回指定して依存関係ツリーを完全に無視します
pacman
。--nodeps
$ sudo pacman -R --nodeps --nodeps avahi
引用: