나는 사람들이 충족되지 않은 종속성을 가지고 있고 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
.
여기서 도움을 받으려는 사람은 먼저 이 명령의 결과를 게시해야 합니다.그들의 질문에. 이는 문제를 식별하는 데 충분한 정보일 수 있습니다.
실생활 문제의 예:
백포트 저장소를 사용한 후 충족되지 않은 종속성: 사용자가 소스를 포함했지만
www.deb-multimedia.org
낮은 우선순위로 고정하지 않았습니다. 낮은 우선순위로 고정하지 않고 타사 소스를 포함하지 마세요. 기본 버전용 패키지를 제공하는 제대로 작동하는 저장소에는 이것이 필요하지 않지만www.deb-multimedia.org
데비안과 호환되지 않는 것으로 알려져 있으므로 일반적으로 알 수 없는 소스를 신뢰해서는 안 됩니다. 더 일반적으로 말하면, 리포지토리가 시스템에 적합하지 않다는 것을 알고 있는 경우 해당 리포지토리를 더 낮은 우선 순위로 고정하세요. 예를 들어 Debian stable 의 test/unstable 소스입니다
.충족되지 않은 종속성: 사용자가 어떻게든 시스템의 기본 버전이 아닌 Python 버전을 설치했습니다. 당연히 모든 지옥이 풀립니다. 요점은 시스템에 적합한 패키지 버전만 설치해야 한다는 것입니다. 위에서
apt-cache policy pkgname
말했지요 .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
당신에게 도움이 되는 많은 정보가 있습니다:
- 먼저 문제를 일으킨 전체 명령을 포함합니다.
다음과 같은 패키지에 대한 정보가 포함됩니다.
apt-cache policy name-of-packages-involved
따라서 귀하의 경우에는 최소값의 출력이 있습니다
apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libgl1-mesa-glx:i386 libdrm-nouveau2:i386
.출력은
sudo apt-get check
또한sudo dpkg -C
하나를 가질 가능성을 높일 수도 있습니다.sudo apt-get update
cat /etc/apt/sources.list{,.d/*.list}
경우에 따라 및 의 전체 출력이 도움이 될 수 있습니다. 패키지를 설치하려는 경우why-not
aptitude 명령의 출력을 통해 쉽게 알아낼 수 있습니다.aptitude why-not sysvinit-core i A systemd-sysv Breaks sysvinit-core
이 문제를 해결하기 위해 도움을 요청할 때 항상전체 출력 포함제기된 모든 문제와 마찬가지로 이 방법을 사용하면 해결이 더욱 빨라질 것입니다.