명령어/Linux

[RHEL] dnf leaves 아무도 안 쓰는 최상위 패키지 찾기

jykim23 2026. 8. 4. 22:56
반응형

부제: 다른 패키지가 의존하지 않는 "잎사귀" 패키지만 추려 정리 후보 뽑기

dnf leaves                         # 무엇도 의존하지 않는 최상위 패키지 목록
dnf leaves | wc -l                 # 잎사귀 패키지 개수
dnf repoquery --unneeded           # (비교) 자동설치 후 고아가 된 패키지
$ dnf leaves
- NetworkManager-tui-1:1.54.3-2.el9.x86_64
- at-3.1.23-13.el9_7.x86_64
- bash-completion-1:2.11-5.el9.noarch
- bind-utils-32:9.16.23-40.el9_8.1.x86_64
...
(총 252개)

dnf leaves는 다른 어떤 패키지도 의존하지 않는 "잎(leaf)" 패키지를 나열한다. 별도 플러그인(python3-dnf-plugin-leaves)이 필요하다. 이 목록이 곧 사용자가 명시적으로 설치했거나, 지워도 다른 것을 깨지 않는 후보다. 시스템에서 무엇을 실제로 쓰는지 파악하거나 군더더기를 걷어낼 때 출발점이 된다. 데비안 계열의 deborphan이나 apt-mark showmanual과 결이 비슷하다.

의존성 그래프의 위상만 계산하는 조회 명령이라 시스템을 바꾸지 않는다. 여기 뜬 걸 지운다고 다 안전한 건 아니니, mark나 repoquery로 설치 이유를 함께 확인하는 게 좋다.

이렇게도 쓴다

잎사귀 패키지가 몇 개인지 규모부터 본다(파이프 조합).

dnf leaves | wc -l

 

이름으로 특정 패키지가 잎사귀인지 확인한다.

dnf leaves | grep -i httpd

 

repoquery의 사용자 설치 표시와 비교해 정리 후보를 좁힌다(조합).

comm -12 <(dnf leaves | sed 's/^- //;s/-[0-9].*//' | sort) \
         <(dnf repoquery --userinstalled --qf '%{name}' | sort)

 

잎사귀 중 특정 패키지의 설치 이유(user/dependency)를 확인한다.

dnf repoquery --qf '%{name} %{reason}' --installed at

 

고아 패키지(unneeded)와 함께 보며 청소 계획을 세운다.

dnf leaves; echo '---'; dnf repoquery --unneeded
반응형