rpm -e --test를 이용한 역의존성 확인 및 패키지 삭제 시뮬레이션
이 단계에서는 역의존성을 확인하고 패키지 삭제를 안전하게 시뮬레이션하는 방법을 배웁니다. rpm -qR 명령어가 패키지가 필요로 하는 것(의존성) 을 보여준다면, rpm -q --whatrequires는 다른 어떤 패키지가 이 패키지를 필요로 하는지(역의존성) 를 보여줍니다. 패키지를 삭제하면 시스템의 다른 부분이 망가질 수 있으므로 삭제 전에 이를 확인하는 것이 매우 중요합니다.
패키지 삭제 결과를 안전하게 확인하려면 rpm -e --test 명령어를 사용할 수 있습니다. -e 플래그는 'erase(삭제)'를 의미하며, --test 플래그는 실제로 파일을 삭제하지 않고 모의 실행 (dry run) 을 수행하도록 RPM 에 지시합니다.
먼저 다른 많은 패키지가 의존하는 핵심 시스템 패키지를 살펴보겠습니다. glibc 패키지는 Linux 시스템의 거의 모든 프로그램에 필수적인 GNU C 라이브러리를 제공합니다. 어떤 패키지들이 glibc를 요구하는지 확인해 봅시다.
rpm -q --whatrequires glibc
출력 결과에 glibc에 의존하는 여러 패키지가 표시됩니다.
glibc-common-2.34-168.el9_6.19.x86_64
glibc-langpack-en-2.34-168.el9_6.19.x86_64
libstdc++-11.5.0-5.el9_5.x86_64
glibc-headers-2.34-168.el9_6.19.x86_64
pam-1.5.1-23.el9.x86_64
glibc-devel-2.34-168.el9_6.19.x86_64
nscd-2.34-168.el9_6.19.x86_64
보시는 것처럼 많은 중요한 시스템 패키지가 glibc에 의존하고 있습니다. 이제 glibc를 삭제하려고 하면 어떤 일이 일어나는지 확인해 보겠습니다. 시스템 전체를 망가뜨릴 수 있는 실제 삭제를 방지하기 위해 --test 플래그를 사용합니다.
sudo rpm -e --test glibc
너무 많은 패키지가 glibc를 필요로 하기 때문에 RPM 은 의존성 오류를 보고하고 삭제를 중단합니다. 출력에는 실패한 의존성 목록이 길게 표시됩니다.
error: Failed dependencies:
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-common-2.34-168.el9_6.19.x86_64
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-langpack-en-2.34-168.el9_6.19.x86_64
glibc >= 2.34 is needed by (installed) libstdc++-11.5.0-5.el9_5.x86_64
... (추가 의존성 오류)
이제 의존성이 적은 패키지를 살펴보겠습니다. 앞서 설치한 lsscsi 패키지는 역의존성이 적은 유틸리티 패키지입니다. 무엇이 이 패키지를 요구하는지 확인해 봅시다.
rpm -q --whatrequires lsscsi
lsscsi를 요구하는 패키지가 없다는 출력이 표시되어야 합니다.
no package requires lsscsi
lsscsi에 의존하는 패키지가 없으므로 삭제 시뮬레이션을 안전하게 수행할 수 있습니다.
sudo rpm -e --test lsscsi
이 명령어는 오류 없이 완료되어야 하며, 이는 lsscsi를 삭제해도 시스템의 다른 패키지에 영향을 주지 않음을 나타냅니다.
이를 통해 패키지 삭제의 영향을 예측하고, 역의존성을 먼저 확인하여 시스템 장애를 방지하는 방법을 익혔습니다.