Como dizer ao RPM para ignorar pacotes não instalados no rpm --erase?

Como dizer ao RPM para ignorar pacotes não instalados no rpm --erase?

Eu tenho uma lista de cerca de 30 pacotes "indesejáveis" que sempre apago/excluo/removo em um sistema Linux baseado em RPM recém-instalado.

No entanto, quando tento o --erasecomando, por exemplo (encurtado intencionalmente)

# rpm -e sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python
error: package abrt is not installed
error: package abrt-libs is not installed
error: package abrt-python is not installed
error: package abrt-dbus is not installed
error: package abrt-addon-xorg is not installed
error: package abrt-tui is not installed
error: package abrt-addon-ccpp is not installed
error: package abrt-cli is not installed
error: package abrt-console-notification is not installed
error: package abrt-addon-kerneloops is not installed
error: package abrt-retrace-client is not installed
error: package abrt-addon-vmcore is not installed
error: package abrt-addon-pstoreoops is not installed
error: package abrt-addon-python is not installed
Exit 14

Alguns pacotes ( sossó eu acho?) aparentemente existem, mas não são apagados. Naturalmente não quero combinar as duas listas de pacotes (a minha e as mensagens de erro) e editar a linha de comando porque demora muito mesmo neste pequeno exemplo.

Então é claro que eu poderia tentar contornar isso como

echo sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python | xargs --max-args=1 rpm -e

mas prefiro ignorar pacotes inexistentes.

Como faço isso? --forcenão funciona para apagar:

# rpm -e --force sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python
rpm: only installation and upgrading may be forced
Exit 1

Responder1

Acho que era isso que você estava procurando. Esta versão apenas exibe uma lista de pacotes que correspondem ao que foi instalado.

#- for pkg in sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python; do rpm --quiet -q "$pkg" && echo "$pkg"; done
abrt
abrt-libs
abrt-dbus
abrt-addon-xorg
abrt-tui
abrt-addon-ccpp
abrt-cli
abrt-console-notification
abrt-addon-kerneloops
abrt-retrace-client
abrt-addon-vmcore
abrt-addon-pstoreoops

Você pode usar o acima para gerar uma lista de nomes de pacotes que podem ser retornados rpmpara exclusão (também conhecida como remoção):

#- rpm -e --nodeps $(for pkg in sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python; do rpm --quiet -q "$pkg" && echo "$pkg"; done)
Removed /etc/systemd/system/multi-user.target.wants/abrt-journal-core.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-xorg.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-vmcore.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-oops.service.
Removed /etc/systemd/system/multi-user.target.wants/abrtd.service.

Observe que esta versão simples não lida com processamento de dependências. Se você precisar lidar com dependências, provavelmente deveria apenas mudar para DNF (ou YUM), pois é para isso que essas ferramentas foram criadas.

informação relacionada