사용하지 않는 패키지 제거


62

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

지금 어떻게해야합니까?


당신이 봤어 yum맨 : linux.die.net/man/8/yum ?
Linuxios 2016

답변:


39

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

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

$ package-cleanup --leaves

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

$ package-cleanup --leaves --all

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


9
APT (데비안 Yum에 해당)는“자동으로 설치된 패키지”라는 개념을 가지고 있습니다. 패키지가 명시 적으로 요청되지 않았지만 종속성으로 만 가져온 경우 패키지에 종속 된 패키지가 모두 제거되면 확인 프롬프트와 함께 자동으로 제거됩니다. 이 유형의 표시가 없으면 실제로 쉽지 않습니다.
Gilles

101

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

14
+1 멋진 솔루션과 매우 쉬운 작업. 나는 들어 본 적이 없다 yum history. 감사!
Stefan Lasiewski

8
그리고 89가 java_cup 또는 libgcj에 의존한다면 어떨까요?
WernerCD 12

2
이것이 대답이되어서는 안됩니까?
Celdor

61

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

yum autoremove

또는

yum remove --setopt=clean_requirements_on_remove=1

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

yum autoremove <package>

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


5
명령 yum remove --setopt=clean_requirements_on_remove=1이 centOS에서 작동합니다
BMW

나를 위해 package-cleanup --leaves && yum autoremovelibvorbis를 제거하고 인터넷 라디오 스트리밍 "Ices"응용 프로그램을 죽였습니다. 아마도 repos에 있지 않고 컴파일해야했기 때문일 것입니다.
Nakilon

yum autoremoveCentOS 7.6에서도 명령이 작동합니다.
scrutari

yum autoremove가 CentOS 7에서 4 개의 이전 커널을 제거하지 못함
user1133275

5

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

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

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

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


2
package-cleanup내 컴퓨터에서 "yum 설정"을 출력하여 Yum이 자체적으로 제거되었습니다. 나는 이것을 분류하는 방법을 알아 내려고 노력 중이다.
Paul Lammertsma

@PaulLammertsma -q는 패키지 정리 에 옵션을 추가 합니다. 이것은 나에게도 일어났다 : D
Ealhad

1
package-cleanup -q --leaves | xargs -r -l1 yum -y remove패키지 정리 출력, ansible, 요리사, 인형, 방랑과 같은 자동화 된 스크립트에 유용 비어있는 경우 자동으로 xargs를 건너 뜁니다
일리아 Sheershoff

이것이 답변입니다.
xCovelus

1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.