왜이 추가 의존성이 필요하다고 생각 하는가?


9

일부 컴퓨터 설정 지침을 작성 중이며와 apt-get install A B다르게 동작 할 수 있다는 사실에 놀랐 습니다 apt-get install A && apt-get install B.

내 구체적인 예는 A == openjdk-7-jdkB == ant입니다.

그래서, openjdk-7-jdk에 의존 openjdk-7-jre-headless하는 만족, ant의 의존성 java6-runtime-headless. 그러나로 설치하면 apt-get install openjdk-7-jdk antAPT가이를 파악하지 못하고 설치합니다 default-jre-headless. 그러나 설치 openjdk-7-jdk하기 전에 설치 ant하면 종속성이 만족되고 모두 좋습니다.

APT는 일반적으로 이런 종류의 것을 알아낼 수있을 정도로 똑똑하므로이 경우 왜 그렇게 할 수 없습니까? 왜 이런 식으로 작동하는지에 대해 더 잘 이해하고 싶습니다. 그래서 앞으로 이런 종류의 일이 다시는 나를 트립하지 않습니다.


내 apt 캐시를 보면 openjdk-7-jdk 7 ~ u3-2.1.1 ~ pre1-1ubuntu2가 openjdk-7-jre에 의존하고 openjdk-7-jre-headless에 의존 하므로이 종속성은 간접적입니다. . 개미는 기본 jre-headless에 직접 의존합니다. Precise를 사용하고 있습니다. 나는 추측하지만 apt-get은 임의로 개미로 시작하거나 레벨 1 종속성으로 시작한 다음 레벨 2 종속성으로 이동할 수 있습니다. 어쨌든 패키지의 최종 구성에 관심이 있다면 (openjdk-7-jre-headless on default -..- ..) 패키지를 구체적이고 개별적으로 지정하는 것이 가장 좋은 방법입니다.
존 S Gruber

아직도 그 질문에 관심이 있습니까?
guntbert

@guntbert Sure, 비록 내가 이유가 없다고 믿도록 사임했지만 그것은 그대로입니다.
leedm777

5
APT 해결 프로그램의 작동 방식을 보려면을 참조하십시오 apt-get install -o Debug::pkgProblemResolver=true package1 package2.... 그것이 왜 그렇게 작동하는지 힌트를 줄 수 있습니다.
Lasall

답변:


2

여기에 어떤 종류의 "체중"시스템이있는 것 같습니다 :

$ aptitude why ant openjdk-7-jdk
p   ant                 Recommends ant-optional       
p   ant-optional        Suggests   libgnumail-java    
p   libgnumail-java     Suggests   libgnumail-java-doc
p   libgnumail-java-doc Recommends default-jdk-doc    
p   default-jdk-doc     Depends    openjdk-7-doc      
p   openjdk-7-doc       Suggests   openjdk-7-jdk

당신이 볼 수 있듯이하기 ant로 달려 openjdk-7-jdk제안, 권고 및 의존성의 복잡하고 intricated 금액은, 사용할 때 동안 인해 openjdk-6-jdk의존하는 것은 더 직접적인입니다 :

$ aptitude why ant openjdk-6-jdk
p   ant           Suggests default-jdk | java-compiler | java-sdk
p   openjdk-6-jdk Provides java-sdk

물론 aptitude의존성 해결 방법은와 다를 수 있습니다 apt-get. BTW, openjdk-7-jdk가 설치되지 않은 개미 시뮬레이션을 실행하면 openjdk-6-jdk가 풀리지 않았습니다.

$ sudo apt-get install ant
[sudo] password for braiam: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  ant-optional
Suggested packages:
  default-jdk java-compiler java-sdk ant-gcj ant-doc liboro-java junit
  libregexp-java jython antlr libbcel-java libjdepend-java libgnumail-java
  libcommons-net-java libjsch-java javacc ant-optional-gcj
The following NEW packages will be installed:
  ant ant-optional
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Need to get 2,234 kB of archives.
After this operation, 3,041 kB of additional disk space will be used.
Do you want to continue [Y/n]? 

어쩌면 내가했던 것과 같은 방법을 사용한다면, 지금 데비안 테스트를 사용하고 있으며 저장소가 변경되었을 수 있기 때문에 더 알아낼 수 있습니다.


0

AFAIK에는 종속성을 만족시키기위한 기본값이 있으므로 패키지를 설치하기 전에 해당 종속성이 충족되지 않으면 종속성을 설치 한 다음 요청 된 패키지를 설치합니다.

그러나 이것은 또한 큰 버그 일 수 있습니다.

어느 쪽이든, 그것이 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.