Plesk Upgrade schlägt wegen doppelten RPM-Paketen fehl
Das Upgrade auf Plesk 18 (Obsidian) schlägt fehl, da RPM Pakete für die gleiche Software in unterschiedlichen Versionen installiert sind. Dieser Zustand kann durch ein fehlgeschlagenes Update in der Vergangenheit verursacht worden sein. Nachfolgend sind einige Beispiele aufgelistet:
psa-logrotate-3.8.2-cos6.build120140331.11.x86_64 psa-logrotate-3.8.2-cos6.build1708171004.18.x86_64 psa-12.5.30-cos6.build1205150826.19.x86_64 psa-17.8.11-cos6.build1708180301.19.x86_64 psa-qmail-rblsmtpd-0.88-cos6.build1205150814.17.x86_64 psa-qmail-rblsmtpd-0.88-cos6.build1708171004.18.x86_64 plesk-lmlib-0.2.4-0centos.6.180209.1429.x86_64 plesk-lmlib-0.1.1-centos6.623.15021818.x86_64
Sie sehen, dass z.B. das Paket psa in der Version 12.5.30 und 17.8.11 installiert ist, was gleichzeitig nicht möglich ist. Es muss sich folglich um einen Fehler in der Paketverwaltung handeln.
Lokalisieren doppelter Pakete
Im ersten Schritt müssen Sie alle Pakete ausfindig machen, die in unterschiedlichen Versionen vorhanden sind. Installieren Sie dazu unter CentOS das Paket yum-utils:
[root@server ~]# yum install yum-utils
Danach lassen Sie alle doppelten Pakete mit dem Programm package-cleanup anzeigen, das im Paket yum-utils enthalten ist:
[root@server ~]# package-cleanup --dupes
Sie erhalten nun eine Liste von Paketen wie im Beispiel oben. Gehen Sie diese Paket für Paket durch und erstellen Sie eine neue Liste, in der jeweils die ältesten Versionen enthalten sind. Diese müssen deinstalliert werden.
Achtung: Verwenden Sie nicht den Befehl package-cleanup --cleandupes oder rpm -e paketname.rpm --nodeps
Die RPM-Pakete sind zwar doppelt vorhanden, die Daten und Programme auf der Festplatte existieren aber nur einmal!
Viele Programme enthalten keine Versionsnummer im Dateinamen, z.B. heißt das Programm für den Apache Webserver in Version 2.4.6 /usr/sbin/httpd und für Version 2.4.12 ebenfalls /usr/sbin/httpd. Entfernen Sie nur eines dieser Pakete würde dennoch /usr/sbin/httpd gelöscht. Im schlimmsten Fall machen Sie damit Ihr System unbenutzbar!
Doppelte Pakete entfernen
Die Lösung besteht nun darin nur die doppelten Einträge aus der RPM-Datenbank zu entfernen, nicht jedoch die Dateien im Dateisystem. Führen Sie dazu für jedes alte Paket, das Sie entfernen möchten, folgenden Befehl aus:
[root@server]# rpm -e --nodeps -f --justdb psa-logrotate-3.8.2-cos6.build120140331.11.x86_64
Der wichtige Zusatz --justdb bewirkt, dass lediglich die Einträge in der RPM-Datenbank entfernt werden, nicht jedoch die im Paket genannten Dateien.
Anschließend sollten Updates mit yum update oder dem Plesk Installer wieder wie gewohnt funktionieren.