¿Cómo decirle a RPM que ignore los paquetes no instalados al realizar rpm --erase?

¿Cómo decirle a RPM que ignore los paquetes no instalados al realizar rpm --erase?

Tengo una lista de aproximadamente 30 paquetes "no deseados" que siempre borro/elimino/elimino en un sistema Linux basado en RPM recién instalado.

Sin embargo, cuando intento el --erasecomando, por ejemplo (acortado 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

Algunos paquetes (¿ sossólo supongo?) aparentemente existen pero no se borran. Naturalmente, no quiero hacer coincidir las dos listas de paquetes (la mía y los mensajes de error) y editar la línea de comando porque lleva demasiado tiempo incluso en este breve ejemplo.

Entonces, por supuesto, podría intentar solucionarlo 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

pero prefiero ignorar los paquetes que no existen.

¿Cómo puedo hacer eso? --forceno funciona al borrar:

# 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

Respuesta1

Creo que esto es lo que estabas buscando. Esta versión simplemente muestra una lista de paquetes que coinciden con lo que se instaló.

#- 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

Puede utilizar lo anterior para generar una lista de nombres de paquetes que luego se pueden retroalimentar rpmpara borrarlos (también conocidos como eliminación):

#- 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.

Tenga en cuenta que esta versión simple no maneja el procesamiento de dependencias. Si necesita manejar dependencias, probablemente debería simplemente cambiar a DNF (o YUM), ya que para eso se crearon esas herramientas.

información relacionada