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
.