Fehlerhafte Template-Patches entfernen

  • WCF 1

Achtung: Diese Seite ist nur noch Teil eines Archivs und wird in Zukunft entfernt.

Es kann durchaus vorkommen, dass durch ein Update des Community Frameworks, oder aber von der jeweiligen Endanwendung, bestimmte Templates neu gepatcht werden und damit vorige Template-Patches von installierten Plugins beeinträchtigen, so dass diese z.B. im Falle einer gewollten Deinstallation eine Fehlermeldung ausgeben, z.B. diese:
Das Entfernen eines Patches, der zu diesem Paket gehört, ist fehlgeschlagen, da seine Zieldatei anderweitig verändert worden ist. Das Paket kann deshalb nicht entfernt werden. Bitte klicken sie auf »Abbruch der Paketdeinstallation«.
error message: Can't find an appropriate location for applying this hunk.
error code: 20015
affected template: /var/www/htdocs/wcf/../templates/thread.tpl
Jeder Template-Patch wird in einer Tabelle in der Datenbank des Community Framework gespeichert und hat dabei eine fest angegebene Menge an Zeilen, die vor dem Patch vorhanden sein dürfen. Sind es durch ein wie oben erwähntes Update aber weniger oder mehr Zeilen, wird vom System der Template-Patch nicht mehr gefunden und die oben stehende Fehlermeldung erscheint bei der Deinstallation. Einige Teile des Plugins sind bis zu diesem Zeitpunkt allerdings schon deinstalliert und können auch nicht immer wiederhergestellt werden, weshalb dann nur eine komplette Deinstallation helfen kann, keine Probleme bei Funktionen zu bekommen. Das kann nämlich durchaus sein, wenn ein Plugin noch zu Teilen vorhanden ist.

Für unerfahrene Benutzer ist es trotz eines sehr kleinen Eingriffes in die Datenbank nicht zu empfehlen, den Template-Patch selbst manuell zu entfernen.

Zuerst einmal benötigt man die so genannte packageID, also die ID des Plugins. Jedes installierte Paket erhält diese ID, die kontinuierlich hochzählt. Hat man in seiner Installation also 250 Pakete, hat das letzte mindestens die ID 250, vorausgesetzt, es wurden nicht mehr als 250 Pakete installiert und dann wieder die überzähligen entfernt. Einmal genutzte IDs werden nicht wieder vergeben.
Die jeweilige ID des Paketes steht im ACP unter System -> Paketverwaltung -> Pakete auflisten links neben dem Namen desselben (im Bild rot markiert).


Diese ID muss man sich merken und dann in ein Verwaltungsprogramm für die Datenbank (z.B. phpMyAdmin) gehen. Dort gibt man folgende SQL-Abfrage ein:

SQL-Abfrage

  1. SELECT * FROM `wcf1_template_patch` WHERE `packageID` =XX;
Das XX hinten muss dabei durch die entsprechende ID des Paketes ersetzt werden. Dann werden alle Template-Patches aufgelistet, die dieses Paket durchführt.
Bevor man nun diese Datensätze löscht, sollte man sie vorher in einem Backup der Datenbank sichern.

Nach dem Löschen sollte sich das Paket normal über die Paketverwaltung ohne Fehlermeldung deinstallieren lassen.
Allerdings müssen danach manuell die ungepatchten Templates wieder in die jeweiligen Templateordner kopiert werden und die vorhandenen ersetzen.
Über den Autor
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

900 mal gelesen

Kommentare 2

  • LL.Denny -

    Mein Lob an euch oder dich, eine sehr gute Anleitung die mir weitergeholfen hat.

    Alles Gute und viel Erfolg weiterhin.

  • page -

    Vielen Dank für das Tutorial!

    Funktioniert tadellos! Auch wenn man kein profi ist!

    Danke!