Fedora에서 Orphan 패키지를 제거하려면 어떻게해야합니까?


42

방금 Ubuntu에서 Fedora14로 전환했습니다. 우분투에서는 apt-get autoremove고아 / 사용하지 않은 패키지를 제거했습니다. Fedora의 상대방은 무엇입니까?

답변:


36

package-cleanup --quiet --leaves로부터 냠 - 유틸 패키지되지 않은 다른 패키지가 의존하는 라이브러리 패키지를 나열합니다. 불행히도 그것은 약간 지나치게 열심 인 경향이 있습니다. 예를 들어 내 시스템에서는 libvirt를 제거하는 것이 좋습니다. --exclude-bin인수를 추가하면 도움이됩니다. 제안에 만족한다면 패키지를 정리하려면 다음을 수행하십시오.

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

1
설치 및 제거 netbeans-platform및 패키지 정리 후 테스트 한 결과 일부 항목이 있지만 이전에 설치된 netbeans-platform종속성 (Fedora 17 사용)은 없습니다.
maxschlepzig

2
@maxschlepzig에 의해 지적하지 작업을합니까
c0da

30

Fedora 22 이후 yum 대체품 인 DNF autoremove는 apt-get / yum 자동 제거 후에 모델링 된 하위 명령 도 제공합니다 .

예 :

# dnf autoremove

이것은 자동으로 설치되고 사용되지 않는 모든 의존성 패키지를 제거하려고 시도하는 것과 비슷합니다 apt-get autoremove.

# dnf autoremove examplepackage

examplepackage 및 모든 자동 설치 (및 사용되지 않은) 종속성을 제거합니다.

m

Yum은 Fedora 19부터 autoremove 명령을 가지고 있으며 Fedora 20 / RHEL 7부터 문서화되어 있습니다.

사용법은 dnf 구현과 유사합니다. 예 :

# yum autoremove

또는

# yum autoremove examplepackage

yum 제거 동작 변경

Yum은 remove하위 명령 의 기본 동작을 변경하기위한 구성 옵션을 지원합니다 (예 : /etc/yum.conf를 통해).

clean_requirements_on_remove=yes

yum.conf (5)

이것이 설정되면 다음 yum remove패키지는 다른 패키지에 필요하지 않은 자동 설치 종속성을 제거하려고 시도합니다.

다음과 같은 방법으로이 옵션을 임시로 테스트 할 수도 있습니다.

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

이전 Fedora 버전에 대한 해결 방법

yum autoremove 하위 명령을 사용할 수 clean_requirements_on_remove없거나 작동하지 않는 Fedora 버전의 경우 .

패키지를 설치하는 동안 설치된 종속성은 그와 같이 표시됩니다 (rpm / yum의 비교적 새로운 기능인 것으로 보입니다).

다음을 통해 불필요한 종속성을 찾을 수 있습니다.

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

이 명령 줄은 fenris02의 script에서 영감을 받았습니다 .

검사 tmp및 큐 레이션 후 다음과 같은 방법으로 제거 할 수 있습니다.

# xargs yum remove < tmp

"설치된 pkg에 대해 잘못된 yumdb querytag 'reason': adobe-release-x86_64-1.0-1.noarch"오류가 발생했습니다. 지금이게 뭐야?
c0da

@ c0da, yum이 데이터베이스에 기록하는 기능이 각 패키지의 설치 이유 (예 : 'dep'또는 'user')가 비교적 새로운 것으로 생각합니다. 아마도 Fedora 인스턴스는 해당 태그를 설정하지 않은 채 (몇 개의) 이전 패키지가 설치되도록 해당 기능을 소개하기 이전 일 것입니다.
maxschlepzig 2019

며칠 전에 Fedora 18을 설치했습니다. 필요한 태그가 있어야한다고 생각합니다.
c0da

1
@ c0da, 아마도 당신이 패키지 adobe-release를 설치했기 때문에 '이유'가 기록되지 않았을 것입니다yum localinstall
maxschlepzig

16

yum 플러그인 "remove-with-leaves"를 설치해야합니다.

# yum install yum-plugin-remove-with-leaves.noarch

일단 설치되면 :

# yum remove --remove-leaves package

행운을 빕니다!


3
설치된 모든 앱에 대해 어떻게 실행합니까?
cnd

매우 신뢰할만한 것 같지 않음 : skvidal.wordpress.com/2010/11/09/ 분리 된 dep
clean

1
RHEL / CentOS / Oracle Linux 6 yum-plugin-remove-with-leaves.noarch을 사용 하려면 패키지가 설치되어 있어야합니다package-cleanup
Terry Wang

8
# package-cleanup --orphans >/tmp/junk

/tmp/junk파일을 편집하고 명령 행에서 정보를 제공하는 첫 번째 행을 제거하고 다음을 입력하십시오.

for file in `cat /tmp/junk`
do
  yum remove $file
done

1
package-cleanup (1)의 설명 : '-고아 현재 구성된 저장소에서 사용할 수없는 설치된 패키지를 나열합니다.' 이것은하는 것과 동등 apt-get autoremove하지 않습니다. apt-get (8)은 다음과 같이 말합니다. 'autoremove는 일부 패키지의 종속성을 충족시키기 위해 자동으로 설치된 패키지를 제거하는 데 사용되며 더 이상 필요하지 않습니다.'
maxschlepzig

1
작동하지 않습니다! 나는 이전에 착각 했어야했다. 감사합니다 @maxschlepzig
c0da

이것은 저에게 효과적이지만 CentOS 6.6에서는 고아뿐만 아니라 설치된 모든 패키지를 실제로 나열합니다.
Gaia

4

참고 : 이 답변은 정확하지만 RHEL 7+ 및 Fedora 20+ (자동 제거가 새로운 기능으로 추가 된 경우)에만 적용됩니다.

# yum autoremove

선택한 패키지를 제거하기 만하면됩니다.


0

래리 모어의 답변을 바탕으로 :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

궁금한 경우 가장 빠른 미러를 건너 뛰는 기능이 포함되어 있습니다.


0

Fedora에서 고아 패키지는 업데이트 할 수있는 후보 저장소가 없음을 의미합니다!

  1. 고아 패키지가 생성 된 경우 yum.repos.d / some.conf를 비활성화합니다.

    yum distro-sync
    
  2. 다른 고아 패키지는 명령이 위험 할 수 있습니다.

    yum remove $(package-cleanup --orphans)
    

    또는 안전 명령 만 사용하십시오.

    yum remove name-of-page
    

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