Linux 배포: Red Hat Enterprise Linux Server 버전 6.10(San Diego)
컨텍스트:
서버에서 이전 버전의 Java를 모두 제거해야 합니다.
예를 들어 Java 경로 목록이 있습니다.
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el6_10.x86_64/jre/bin/java
다음을 통해 파일을 소유한 패키지를 찾을 수 있습니다.
rpm -qf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el6_10.x86_64/jre/bin/java
java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
이제 패키지를 제거해도 안전한지 확인하기 위해 모든 종속 패키지를 어떻게 찾나요 ?
다음 명령은 이 openjdk 패키지에 의존하는 다른 패키지가 없음을 나타냅니다(참조:질문-166343):
rpm -q --whatrequires java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
no package requires java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
하지만, mysql-connector-java
패키지에 따라 다릅니다.
이유: --whatrequires
rpm 옵션에 대한 인수는 패키지 이름이 아니라 패키지에서 제공하는 CAPABILITY이며 CAPABILITY로 검색하는 것은 간단하지 않습니다.
다음 명령도 결과를 반환하지 않았습니다.
repoquery --requires --resolve --recursive java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
그렇다면 특정 패키지에 의존하는 모든 rpm 패키지를 쉽게 식별할 수 있는 방법이 있습니까?
패키지란 java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
(가 아님 java-1.8.0-openjdk-headless
) 을 의미합니다.
답변1
이 시도,
rpm -e
이 패키지는 일반적으로 이 패키지에 의존하는 다른 패키지가 있는 경우 제거되지 않습니다( --nodeps
물론 이를 우회하는 데 사용할 수 있음). @JeffSchaller가 언급했듯이 rpm -e
와 함께 사용하여 --test
어떤 것이 있는지 확인할 수도 있습니다.error: Failed dependencies:
--test Don’t really uninstall anything, just go through the motions. Useful in conjunction with the -vv option for debugging.
rpm -e -vv <package_name>
- 조사하다error: Failed dependencies:
또는
rpm -e -vv --test <package_name>
- 조사하다error: Failed dependencies:
더 많은 참고자료man rpm