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의 패키지는 종종 다른 패키지에 대한 종속성을 선언합니다. 한 패키지는 공유 객체(이름 뒤에 접미사가 붙은 파일)와 같은 하나 이상의 기능을 위해 다른 패키지에서 필요하고 제공되기 때문입니다 .so. 이는 다른 많은 GNU/Linux 배포판에 공통적으로 적용되는 종속성 트리의 개념입니다.

발생한 오류는 순환 종속성을 나타내지 않습니다. pacman실제로 출력에는 네 개의 패키지가 의존하는 기능을 제거하려고 한다고 나와 있습니다. 예를 들어 메시지는 다음을 gvfs: removing avahi breaks dependency 'avahi'의미합니다.

  • avahi패키지는 이 avahi기능을 제공합니다.
  • 패키지는 기능 gvfs에 따라 다릅니다 avahi. 그렇지 않으면 제공된 기능이 gvfs제대로 작동하지 않습니다.
  • avahi현재 이 기능을 제공하는 유일한 패키지인 패키지를 제거하려고 합니다 avahi.
  • 종속성 트리 손상을 방지하기 위해 패키지 pacman삭제가 금지됩니다 avahi.

일반적으로 패키지 이름은 기능 이름과 일치하지만 몇 가지 예외가 있습니다. 예를 들어,beanshelljava-runtime패키지는 다음으로 구성된 기능 에 따라 다릅니다 .jre8-openjdk,jre10-openjdk그리고 다른 여러 패키지.

잠재적인 종속성 트리 중단이 발견 되면 pacman이를 처리하는 방법을 패키지 관리자에게 알려야 합니다. 다음 옵션이 표시됩니다.

  • 인수를 지정하여 제거할 기능에 의존하는 패키지와 모든 패키지를 제거하도록 pacman지시 합니다 .avahi--cascade
    $ sudo pacman -R --cascade avahi
  • 인수를 두 번 지정하여 종속성 트리를 완전히 무시합니다 pacman.--nodeps
    $ sudo pacman -R --nodeps --nodeps avahi

인용하다:

관련 정보