사용하지 않는 패키지 제거

사용하지 않는 패키지 제거

Fedora 17에 일부 rpm 패키지를 설치했습니다. 일부 패키지에는 많은 종속성이 있습니다. 일부 패키지를 제거했지만 yum 제거를 사용하여 사용하지 않는 종속성을 제거하는 것을 잊었습니다.

이제 어떻게 해야 하나요?

답변1

yum install예를 들어 패키지를 설치하면 pdftk많은 종속성이 발생합니다.

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk모든 종속 항목 대신 패키지만 제거됩니다.

하지만 모든 "거래"(설치, 제거 등)를 볼 수 있습니다.

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

그런 다음 거래를 취소할 수 있습니다.

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

답변2

Fedora 18부터 간단히 이 명령을 사용할 수 있습니다.

yum autoremove

또는

yum remove --setopt=clean_requirements_on_remove=1

특정 패키지에 자동 제거 명령을 적용할 수도 있습니다.

yum autoremove <package>

이렇게 하면 설치된 패키지에서 불필요한 종속성이 제거됩니다. autoremove대체로 별칭이지만 remove --setopt=clean_requirements_on_remove=1어떤 이유로든 아직 문서화되지 않았습니다.

답변3

쉽지 않습니다. "삭제한 콘텐츠에 필요한 파일"과 "실제로 원하는 다른 콘텐츠에 필요하지 않은 파일"을 어떻게 구별합니까?

package-cleanup패키지 내의 명령을 사용하여 yum-utils패키지의 종속성 그래프에 "리프 노드"를 나열할 수 있습니다. 다음은 다른 것에 영향을 주지 않고 제거할 수 있는 패키지입니다.

$ package-cleanup --leaves

그러면 다른 종속성이 없는 "라이브러리" 목록이 생성됩니다. 대부분의 경우 이러한 패키지를 안전하게 제거할 수 있습니다. --all명령줄에 추가하는 경우 :

$ package-cleanup --leaves --all

라이브러리로 간주되지 않는 패키지도 얻을 수 있지만 이 목록은 너무 길어서 유용하지 않을 수 있습니다.

답변4

최신 dnfFedora 에서는 dnf repoquery --unneeded.package-cleanup --leaves

관련 정보