APT 종속성 문제를 해결하려면 어떤 정보가 필요합니까?

APT 종속성 문제를 해결하려면 어떤 정보가 필요합니까?

나는 사람들이 충족되지 않은 종속성을 가지고 있고 apt-get이 다음과 같이 문제가 무엇인지 직접 알려주지 않는 경우를 여러 번 보았습니다.

The following packages have unmet dependencies:
 libgl1-mesa-dri:i386 : Depends: libdrm-intel1:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libdrm-nouveau2:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libdrm-radeon1:i386 (>= 2.4.31) but it is not going to be installed
                        Depends: libdrm2:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libglapi-mesa:i386 but it is not going to be installed
 libgl1-mesa-glx:i386 : Depends: libdrm2:i386 (>= 2.3.1) but it is not going to be installed
                        Depends: libglapi-mesa:i386 (= 9.2.1-1ubuntu3) but it is not going to be installed
                        Depends: libx11-6:i386 (>= 2:1.4.99.1) but it is not going to be installed
                        Depends: libxcb-dri2-0:i386 (>= 1.8) but it is not going to be installed
                        Depends: libxcb-glx0:i386 (>= 1.8) but it is not going to be installed
                        Depends: libxcb1:i386 but it is not going to be installed
                        Depends: libxdamage1:i386 (>= 1:1.1) but it is not going to be installed
                        Depends: libxext6:i386 but it is not going to be installed
                        Depends: libxfixes3:i386 but it is not going to be installed
                        Depends: libxxf86vm1:i386 but it is not going to be installed

사용 가능한 것을 찾을 때까지 모든 종속성을 반복하는 것이 고통스러울 것이라는 것을 알고 있지만 apt-get install libgl1-mesa-dri:i386 libdrm-intel1:i386이 경우 패키지 수로 인해 고통스러울 것입니다. 이 작업을 수행하는 더 쉬운 방법이 있나요?

답변1

가장 먼저 해야 할 합리적인 일은 왜 지금 하고 있는 일을 하고 있는지 물어보는 것입니다. 이는 옵션을 통해 수행할 수 있습니다 -o Debug::pkgProblemResolver=yes. 예를 들어

apt-get -o Debug::pkgProblemResolver=yes install libgl1-mesa-dri:i386 libdrm-intel1:i386

apt가 발생하지 않는 경우 이러한 문제를 디버깅하는 표준 방법은 오류 메시지에 언급된 각 패키지의 사용 가능한 버전의 우선 순위 번호를 확인하는 것입니다. 이는 일반적으로 apt-cache policy.

예를 들어 오류 메시지의 첫 번째 부분만 사용하려면 다음을 실행합니다.

apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libglapi-mesa:i386

진행 방법은 이것이 나타내는 내용에 따라 다릅니다. 그냥 실행하는 것도 종종 유용합니다.

apt-cache policy

그러면 사용 가능한 모든 패키지 소스와 해당 우선순위 번호가 표시됩니다. 이 정보는 일반적으로 /etc/apt/sources.list둘 중 하나 또는 둘 모두에 지정 됩니다 /etc/apt/sources.list.d.

여기서 도움을 받으려는 사람은 먼저 이 명령의 결과를 게시해야 합니다.그들의 질문에. 이는 문제를 식별하는 데 충분한 정보일 수 있습니다.

실생활 문제의 예:

  1. 백포트 저장소를 사용한 후 충족되지 않은 종속성: 사용자가 소스를 포함했지만 www.deb-multimedia.org낮은 우선순위로 고정하지 않았습니다. 낮은 우선순위로 고정하지 않고 타사 소스를 포함하지 마세요. 기본 버전용 패키지를 제공하는 제대로 작동하는 저장소에는 이것이 필요하지 않지만 www.deb-multimedia.org데비안과 호환되지 않는 것으로 알려져 있으므로 일반적으로 알 수 없는 소스를 신뢰해서는 안 됩니다. 더 일반적으로 말하면, 리포지토리가 시스템에 적합하지 않다는 것을 알고 있는 경우 해당 리포지토리를 더 낮은 우선 순위로 고정하세요. 예를 들어 Debian stable 의 test/unstable 소스입니다
    .

  2. 충족되지 않은 종속성: 사용자가 어떻게든 시스템의 기본 버전이 아닌 Python 버전을 설치했습니다. 당연히 모든 지옥이 풀립니다. 요점은 시스템에 적합한 패키지 버전만 설치해야 한다는 것입니다. 위에서 apt-cache policy pkgname말했지요 .

  3. dpkg/apt-get이 다른 패키지를 설치하고 덮어쓰려고 합니다.: 사용자는 기본 dpkg데이터베이스가 손상되었음에도 불구하고 패키지를 설치하려고 합니다. 윤리적으로 dpkg문제가 있다는 메시지가 패키지에 표시되면 이 경우

    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not  
    fully installed or removed. 
    

    패키지 데이터베이스에 문제가 있습니다. 다른 것을 설치하기 전에 문제를 해결하십시오. 작동하지 않으면 문제를 해결하기 위한 apt-get -f install조치를 취해야 할 수도 있습니다 .dpkg

답변2

당신에게 도움이 되는 많은 정보가 있습니다:

  1. 먼저 문제를 일으킨 전체 명령을 포함합니다.
  2. 다음과 같은 패키지에 대한 정보가 포함됩니다.

    apt-cache policy name-of-packages-involved
    

    따라서 귀하의 경우에는 최소값의 출력이 있습니다 apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libgl1-mesa-glx:i386 libdrm-nouveau2:i386.

  3. 출력은 sudo apt-get check또한 sudo dpkg -C하나를 가질 가능성을 높일 수도 있습니다.

  4. sudo apt-get updatecat /etc/apt/sources.list{,.d/*.list}경우에 따라 및 의 전체 출력이 도움이 될 수 있습니다. 패키지를 설치하려는 경우 why-notaptitude 명령의 출력을 통해 쉽게 알아낼 수 있습니다.

    aptitude why-not sysvinit-core
    i A systemd-sysv Breaks sysvinit-core
    

이 문제를 해결하기 위해 도움을 요청할 때 항상전체 출력 포함제기된 모든 문제와 마찬가지로 이 방법을 사용하면 해결이 더욱 빨라질 것입니다.

관련 정보