2013-04-24 3 views
1

동일한 기능을 제공하는 여러 RPM이있는 상황을 고려하십시오. 가설적인 예는 Oracle JDK rpm, Oracle JRE rpm 및 OpenJDK rpm 모두가 SPEC 파일의 "Provides"필드에 "java-env"가 나열되도록합니다. 이제 우리는 ant, groovy, maven과 같은 rpms를 가지고 있으며, 모두 SPEC 파일에 "Requires"필드가 "java-env"로 설정되어 있습니다. Groovy 또는 Maven 설치를 시도 할 때 무엇이 ​​설치됩니까? 어떤 방식으로 종속성을 설치할지 제어 할 수 있습니까? 한 가지 방법은 Oracle JDK rpm, Oracle JRE rpm 및 OpenJDK를 모두 다른 저장소에두고 저장소의 우선 순위를 설정하는 것이지만이 방법으로 여러 가지 이러한 충돌이 발생하면 repos의 수가 계속 증가 할 수 있습니다. .RPM 사양에서 '제공'충돌에 대한 해결

답변

1

여러 패키지가 동일한 기능을 제공하는 경우 각 패키지를 설치할 수 있습니다. 이것은 주로 사용자 선택입니다. 패키지가 제대로 완료되면 각 패키지를 설치할 수 있어야합니다 (한 번에 하나씩).

환경을 필요로하는 패키지는 어떤 패키지가 설치되거나 사용되는지 알지 못합니다.

사용자 상호 작용없이 설치된 패키지는 패키지 관리자에 따라 다릅니다. 일부는 사용자에게 물어보고, 일부는 선호하는 것을 선택합니다 ...

특수 Java 버전이 필요하면 일반 패키지를 요구하는 대신 특정 패키지가 필요합니다. 여기서 문제는 다른 패키지가 다른 패키지를 요구할 수 있고 그런 다음 당신은 해결할 수없는 충돌이 있다는 것입니다. 그래서 가장 좋은 방법은 항상 generic Requires을 사용하는 것입니다.

대부분의 시스템에서 여러 개의 Java 패키지를 설치할 수도 있습니다. 그러면 설치 프로세스가 기본값으로 가장 좋은 것을 선택합니다 (/etc/alternatives 메커니즘을 통해).

+0

덕분에 더크!. 머리 꼭대기에서 anaconda (redhat 설치 프로그램)가 의존성을 해결하고 OS 설치 시간에 설치하는 경우 행동이 무엇인지 알 수 있습니다. 킥 스타트 파일에는 jdk/jre에 대한 언급이 없지만 멋져요. –

+0

아니요, 저는 보통 openSUSE를 사용합니다. –