Vor ein paar Wochen hatte ich Microsoft Edge für ein paar Tests installiert. Das Paket wurde dann im Laufe der nächsten Tage aktualisiert, aber das erste Paket war wohl “buggy” gewesen und konnte auch beim Aktualisieren nicht mehr entfernt werden.
Laut Yast waren dann beide Versionen installiert und ließen sich beide per Yast nicht mehr entfernen.
Das aktuelle Paket habe ich dann mit zypper direkt entfernt:
Leider funktioniert es aver auch nach einigen Aufräum-Versuchen immer noch nicht den obsoleten Eintrag wieder loszuwerden:
sudo zypper clean --all
sudo zypper refresh
sudo rpm --rebuilddb
sudo zypper remove microsoft-edge-stable-147.0.3912.72-1
/var/tmp/rpm-tmp.5g7Ysb: line 191: syntax error near unexpected token `}'
/var/tmp/rpm-tmp.5g7Ysb: line 191: `}'
error: %preun(microsoft-edge-stable-147.0.3912.72-1.x86_64) scriptlet failed, exit status 2
error: microsoft-edge-stable-147.0.3912.72-1.x86_64: erase failed
(1/1) microsoft-edge-stable-147.0.3912.72-1.x86_64 wird entfernt ........................................................[Fehler]
Entfernen von (3765)microsoft-edge-stable-147.0.3912.72-1.x86_64(@System) fehlgeschlagen:
Fehler: Subprocess failed. Error: RPM fehlgeschlagen: Kommando mit Status 1 beendet.
Leider kann ich dieses Paket auch nicht erneut installieren. Das noch vorhandene im Paket Cache produzierte den selben Fehler - daraufhin habe ich es dann gelöscht. Leider ist aber genau diese Version auch im Microsoft Repository entfernt worden (wahr wohl fehlerhaft!).
Lange Rede, kurzer Sinn:
Wie lässt sich der obsolete Verweis im Zypper “Gedächtnis”, also vermutlich der RPM-Datenbank endgültig löschen?
Auch sudo zypper verifyscheitert jedes Mal am selben Fehler.
Ich hätte dazu aber noch eine Verständnisfrage…:
Wenn ich Dich richtig verstehe, wird es durch den Befehl nur ignoriert, oder?
Sollte ich es dann nicht auch löschen? Aber, wo liegt das Skript?
Ich konnte jetzt die aktuelle Version installieren und auch wieder entfernen ohne weitere Fehler!
Genau: Die Skripte werden hier nur nicht ausgeführt. Die sind Teil des RPMs. Für installierte Pakete sind die wohl in der RPM-DB /var/lib/rpm/Packages.db abgelegt. Dein rpm -e --noscripts sollte das zusammen mit den anderen Paket-Metadaten auch gelöscht haben.
Ob es bedenklich ist, daß diese Skripte nun nicht ausgeführt wurden, hängt natürlich davon ab, was sie getan hätten. Typischerweise werden damit noch irgendwelche zusätzlichen Sachen aufgeräumt; was eben darüber hinausgeht, Dateien aus der Dateiliste des Pakets zu löschen (siehe auch rpm -qf <Paketname>).
Falls du hier tiefer eintauchen möchtest, probier’s mal damit:
Damit kannst du ansehen, welche Dateien bei dir in Systemverzeichnissen herumliegen, die zu keinem installierten Paket gehören; also z.B. die Hinterlassenschaften eines sudo make install oder, wie in deinem Fall, von Paketen, die mit Notwerkzeugen aus dem System entfernt wurden.
In den meisten Fällen ist das schlicht und einfach egal. Aber manchmal können da durchaus auch dicke Brocken zurückbleiben. Und außerdem sind wir doch neugierig, oder?