Verificar Dependências Reversas e Simular a Remoção de Pacotes com rpm -e --test
Nesta etapa, você aprenderá como verificar dependências reversas e simular com segurança a remoção de um pacote. Enquanto o comando rpm -qR mostra o que um pacote precisa (suas dependências), o comando rpm -q --whatrequires mostra quais outros pacotes precisam dele (suas dependências reversas). É extremamente importante saber disso antes de remover um pacote, pois você pode quebrar outras partes do sistema.
Para verificar com segurança as consequências da remoção de um pacote, você pode usar o comando rpm -e --test. A flag -e significa 'erase' (apagar) e a flag --test instrui o RPM a realizar uma simulação sem excluir nenhum arquivo de fato.
Vamos começar examinando um pacote central do sistema do qual muitos outros pacotes dependem. O pacote glibc fornece a Biblioteca GNU C, que é fundamental para quase todos os programas em um sistema Linux. Vamos verificar quais pacotes requerem o glibc.
rpm -q --whatrequires glibc
A saída mostrará vários pacotes que dependem do 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
Como você pode ver, muitos pacotes críticos do sistema dependem do glibc. Agora vamos ver o que acontece quando tentamos remover o glibc. Usaremos a flag --test para garantir que não o removeremos de fato, o que quebraria todo o sistema.
sudo rpm -e --test glibc
Como tantos pacotes precisam do glibc, o RPM relatará erros de dependência e impedirá a remoção. A saída mostrará uma longa lista de dependências falhas:
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
... (additional dependency errors)
Agora vamos olhar para um pacote com menos dependências. O pacote lsscsi que instalamos anteriormente é um pacote utilitário com menos dependências reversas. Vamos verificar o que o requer:
rpm -q --whatrequires lsscsi
Você deve ver uma saída indicando que nenhum pacote requer o lsscsi:
no package requires lsscsi
Como nenhum pacote depende do lsscsi, podemos simular sua remoção com segurança:
sudo rpm -e --test lsscsi
Este comando deve ser concluído sem erros, indicando que a remoção do lsscsi não quebraria nenhum outro pacote no sistema.
Isso demonstra como você pode prever o impacto da remoção de um pacote e evitar danificar seu sistema verificando primeiro as dependências reversas.