Wie kann ich RPM anweisen, nicht installierte Pakete bei rpm --erase zu ignorieren?

Wie kann ich RPM anweisen, nicht installierte Pakete bei rpm --erase zu ignorieren?

Ich habe eine Liste mit etwa 30 „unerwünschten“ Paketen, die ich auf einem neu installierten RPM-basierten Linux-System immer lösche/entferne.

Wenn ich jedoch den --eraseBefehl versuche, zB (absichtlich gekürzt)

# 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

Einige Pakete ( sosnur, nehme ich an?) existieren anscheinend, sind aber nicht gelöscht. Natürlich möchte ich die beiden Paketlisten (meine und die Fehlermeldungen) nicht abgleichen und die Befehlszeile bearbeiten, da dies selbst in diesem kurzen Beispiel zu lange dauert.

Ich könnte natürlich versuchen, das Problem zu umgehen,

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

aber ich würde nicht vorhandene Pakete lieber ignorieren.

Wie mache ich das? --forcefunktioniert beim Löschen nicht:

# 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

Antwort1

Ich denke, das ist, wonach Sie gesucht haben. Diese Version gibt nur eine Liste von Paketen aus, die mit dem übereinstimmen, was installiert wurde.

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

Sie können das Obige verwenden, um eine Liste mit Paketnamen zu generieren, die dann rpmzum Löschen (auch bekannt als Entfernen) wieder eingegeben werden können:

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

Beachten Sie, dass diese einfache Version keine Abhängigkeitsverarbeitung unterstützt. Wenn Sie Abhängigkeiten verarbeiten müssen, sollten Sie wahrscheinlich einfach zu DNF (oder YUM) wechseln, da diese Tools zu diesem Zweck erstellt wurden.

verwandte Informationen