[unix] 사용하지 않는 패키지 제거

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

지금 어떻게해야합니까?



답변

쉽지 않습니다. “내가 원하는 다른 파일에 필요하지 않은 파일”과 “내가 원하는 다른 파일에 필요하지 않은 파일”을 어떻게 구별합니까?

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

$ package-cleanup --leaves

이것은 다른 것에 의존하지 않는 “라이브러리”목록을 생성합니다. 대부분의 경우 이러한 패키지를 안전하게 제거 할 수 있습니다. --all명령 행에 추가 하는 경우 :

$ package-cleanup --leaves --all

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


답변

패키지를 함께 설치하는 경우 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!


답변

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

yum autoremove

또는

yum remove --setopt=clean_requirements_on_remove=1

특정 패키지와 함께 autoremove 명령을 적용 할 수도 있습니다

yum autoremove <package>

설치된 패키지에서 불필요한 종속성을 제거합니다. autoremove은 별명 remove --setopt=clean_requirements_on_remove=1이지만 어떤 이유로 든 여전히 문서화되어 있지 않습니다.


답변

나는 larsks가 한 걸음 더 멀리 대답했다.

$ package-cleanup -q --leaves | xargs -l1 yum -y remove

이를 통해 다른 것에 영향을주지 않고 제거 할 수있는 모든 종속성을 파악한 다음 제거합니다. 그 다음에 하나씩하는 것이 좋습니다.

“-q”는 “yum 설정”을 인쇄하여이 명령으로 yum을 제거하는 일부 시스템에서 유용합니다. 그리고 그것은 당신이 원하는 것이 아닙니다.


답변

와 새로운 페도라에서 dnf, 당신은 사용할 수 있습니다 dnf repoquery --unneeded를 대체 package-cleanup --leaves.


답변