일부 패키지를 제거하려고 하면 다음 오류가 발생합니다.
╰─ 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의 패키지는 종종 다른 패키지에 대한 종속성을 선언합니다. 한 패키지는 공유 객체(이름 뒤에 접미사가 붙은 파일)와 같은 하나 이상의 기능을 위해 다른 패키지에서 필요하고 제공되기 때문입니다 .so
. 이는 다른 많은 GNU/Linux 배포판에 공통적으로 적용되는 종속성 트리의 개념입니다.
발생한 오류는 순환 종속성을 나타내지 않습니다. pacman
실제로 출력에는 네 개의 패키지가 의존하는 기능을 제거하려고 한다고 나와 있습니다. 예를 들어 메시지는 다음을 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
- 인수를 두 번 지정하여 종속성 트리를 완전히 무시합니다
pacman
.--nodeps
$ sudo pacman -R --nodeps --nodeps avahi
인용하다: