YUM 설치가 인식되지 않습니다.

YUM 설치가 인식되지 않습니다.

YUM을 사용하여 일부 패키지를 설치하려고 합니다. 내가 사용하는 명령은 다음과 같습니다.

sudo yum repo-pkgs [my repo] install

그러면 다음과 같은 결과가 생성됩니다.

 Error: Package: [package name] ([my repo])
       Requires: jdk >= 2000:1.8.0
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

이 오류는 JDK가 이미 설치되어 /user/java/jdk1.8.0_25있고 오류 메시지에 따르면 충분히 새로운 버전이어야 하기 때문에 혼란스럽습니다.

YUM이 JDK를 인식하도록 하기 위해 수행해야 할 작업이 있습니까?

어떤 제안이라도 환영합니다. 감사합니다.

답변1

@Arthur가 말했듯이 문제는 시스템에 있는 것과 RPMDB에 있는 것 사이의 연결이 끊긴 것입니다. RPMDB에는 설치된 것으로 알고 있는 JDK가 있지만 해당 JDK는 설치하려는 패키지의 패키지 종속성을 충족하지 못할 수 있습니다. 실제로는 그렇지 않습니다. 그렇지 않으면 특정 오류 메시지가 표시되지 않습니다. 여기에서 어디로 갈지는 솔루션을 얼마나 "깨끗하게"("빠르게"와 반대) 원하는지에 따라 달라집니다.

@Arthur가 제안한 대로 더미 패키지를 만들 수 있습니다. 이 패키지는 에포크 2000 이상 에 의존 jdk하고 이를 제공해야 합니다 . jdk 1.8.0페이로드가 없어야 합니다. 심지어 @Arthur의 제안이 실패하는 심볼릭 링크도 없어야 합니다.

다음을 사용하여 --nodeps패키지를 설치할 수도 있습니다.

마지막으로 논의 결과에 따르면, 이 패키지를 빌드하고 저장소에 넣는 사람은 바로 당신이기 때문에 사양 파일의 Requires: 줄을 변경할 수 있습니다.

답변2

실제로 JDK가 있지만 존재하지 않습니다.RPM 데이터베이스, yum 및 기타 유사한 자동 패키지 관리자가 어떤 패키지가 설치되어 있는지 파악하고 해당 버전을 가져오는 데 사용됩니다.

가장 좋은 해결책은 아마도 실행하여 sudo yum install jdkyum 및 rpm이 포함된 버전을 얻는 것입니다.

제안된 대로 해당 옵션을 추가하는 것을 고려할 수도 있지만 --skip-brokenPS의 두 번째 지점과 동일한 문제가 있습니다.

이러한 rpm -Va작업을 실행하면 RPM이 누락된 패키지와 파일을 찾는 데 도움이 될 수 있습니다. RPM을 통해 Java를 설치했다고 생각한다면 시도해 보세요.

추신: 처음에는 dpkg 사용자처럼 더미 패키지를 만드는 것을 고려했지만 다음과 같습니다.

  1. RPM에서 패키지를 만드는 것은 매우 긴 사양을 작성해야 하기 때문에 매우 복잡합니다. RPM은 또한 파일 목록을 사용하여 라이브러리 종속성을 찾기 때문에 상당히 긴 파일 목록을 제공해야 합니다.
    가능한 해결 방법: 많은 수의 쉘을 자동으로 %files생성합니다 .find
  2. 가상 패키지를 만들고 설치했더라도 패키지가 하드 코딩된 로직을 사용하여 Java가 설치한 jdk 패키지로 이동하는 경우 Java를 찾지 못할 가능성이 높습니다. (대부분의 패키지 작성자는 이와 같은 이상한 디렉토리를 사용하지 않으며 /user운이 좋지 않아 아무것도 모르는 사람이 작성한 패키지를 찾을 수 있는 경우 java_home...)
    가능한 해결 방법: 심볼릭 링크.

고쳐 쓰다:

JDK의 패키지 이름은 입니다 jdk1.8.0_25. 이미 RPM을 사용하여 패키지를 설치했으므로 더미 패키지를 만드는 것이 더 쉽고 깔끔할 것입니다. 하지만 여전히 다소 지저분한 방법입니다.

필요한 패키지 버전에 대한 사양을 작성 jdk하고 이를 종속성으로 만듭니다 jdk1.8.0_25. 그런 다음 %files프로그램이 찾을 수 있도록 블록에 일부 기호 링크를 추가합니다 . 마지막으로 심볼릭 링크가 실제로 생성되고 실행됩니다 rpmbuild -bb dummy_jdk.spec.

관련 정보