phpBB.de - Die deutsche phpBB-Community
Stand: 30.12.2008 04:56
aktuelle Version auf phpBB.de
 
Apache At Work Communities Community Building Informationen und Hinweise Installation/Konfiguration/Update MySQL PHP phpBB-Optimierungen phpBB3 Rechtliches Server & Technik Snippets Templates und Mods
 



Knowledge Base Offline -> Installation/Konfiguration/Update -> Hinweise zum Update mit Hilfe des Progammes: "patch"

Hinweise zum Update mit Hilfe des Progammes: "patch"
Autor: CKoenig,saerdnaer
Stand: 30.12.2008 04:56
Neuste Version unter: http://www.phpbb.de/doku/kb/patch

Hinweise zum Update mit Hilfe des Progammes: "patch"

Hilfe zum benutzen des Progammes: "patch". Informationen zur Installation von "patch" unter Windows.
Vorbereitungen

Linux
Das Programm patch sollte bei gängigen Linux-Distributionen vorinstalliert sein. Falls man SSH-Zugriff auf seinen Webserver hat, kann man auch direkt auf dem Server patchen.

Windows
Bei Windows ist das Programm nicht dabei, also musst du es manuell installieren.
Am einfachsten mit dem Paket "Patch Befehl für Windows". Die enthaltenen Dateien einfach ins C:\Windows\System32 oder C:\WinNT\System32 Verzeichnis kopieren und schon ist der Befehl auch unter Windows vorhanden.

Patchen

Natürlich solltest du nicht an deiner orginalen Version patchen. Am besten du machst dir vorher eine Kopie, die du z.B. unter c:\Meine Webprojekte\phpBB speicherst.

Zuerst braucht man natürlich die Patchdatei, damit das Programm weiß, was es machen soll. Diese Patch-Datei bekommt man aus dem Paket von phpBB.com oder von uns das mit "-patch" endet. Dort die entspechende Datei raussuchen und ebenfalls nach c:\Meine Webprojekte\phpBB kopieren. Zum Datenbankupdate musst du außerdem noch die install/update_to_latest.php aus dem Packet in das Unterverzeichnis install kopieren.

Konsole öffnen
Unter Windows findest du die Konsole unter Start->Programme->Zubehör->Eingabeaufforderung.
Linux Benutzer wissen in der Regel wo sie suchen müssen.

In Arbeitsverzeichnis wechseln
In der Konsole müsst ihr jetzt in euer phpBB Verzeichnis wechseln, in unserem Beispiel wäre das also c:\Meine Webprojekte\phpBB.
Falls sich dieses Verzeichnis auf einer anderen Festplatte befindet zuerst den Laufwerksbuchstaben eingeben.
Code:
c:

Dann ins eigendliche Verzeichnis wechseln:
Code:
cd "c:\Meine Webprojekte\phpBB"


Patch-Befehl ausführen
Und schließlich kommt der Patch-Befehl:
Code:
patch -p1 -i phpBB-2.0.15_to_2.0.18.patch

Achtung: Der erste Parameter lautet nicht -pl (p kleines L) sondern -p1 (p Eins)!
Der Dateiname variiert natürlich von Fall zu Fall.

Das Programm läuft dann eine kurze Zeit. Du solltest unbedingt die Ausgabe des Programmes lesen.
Im Idealfall stehen dort nur Zeilen "patching file viewtopic.php".
Falls dort jedoch z.B. "1 out of 2 hunks FAILED" steht, konnten die entsprechenden Bereiche nicht automatisch geändert werden.
In diesem Fall liest du bitte unten bei "Fehler" weiter.

Aufräumarbeiten
Schließlich löscht du noch die evtl. vorhanden Verzeichnisse contrib und docs. Das install-Verzeichnis brauchst du noch für später. Auch die Patch-Datei kann gelöscht werden. Falls das Programm noch irgendwelche .orig oder .rej angelegt hat, solltest du auch die löschen. Die .rej Dateien natürlich nur löschen, wenn du den Abschnitt "Fehler" durchgelesen hast.
Am besten geht das mit dem folgenden Befehlen:
Windows
Code:
del /S *.orig
del /S *.rej

Linux
Code:
find . -name "*.orig" -exec rm -f {} \;
find . -name "*.rej" -exec rm -f {} \;


Hochladen
Jetzt kannst du die neuen Dateien auf deine Webspace laden. Wenn du willst, kannst du es vorher noch lokal testen.

Datenbank-Update-Datei
Zum Datenbankupdate gibst du jetzt noch http://deinedomain.de/phpBB/install/update_to_latest.php im deinem Browser ein und rufst die Seite auf (http://deinedomain.de/phpBB durch den korrekten Pfad ersetzen).
Wenn das Update erfolgereich abgeschlossen wurde, solltest du das install-Verzeichnis auch löschen.

Und schon hast du dein phpBB auf dem aktuellen Stand.


Fehler
.rej Dateien
Im Fehlerfall legt das Programm eine Datei mit der Endung .rej an, in der die fehlgeschlagegen Änderungen enthalten sind.
Diese Dateien kannst du dann einfach in einem Texteditor öffnen und die Änderungen manuell vornehmen.

Beispiel: viewtopic.php.rej
Code:
***************
*** 1107,1113 ****
     {
        // This was shamelessly 'borrowed' from volker at multiartstudio dot de
        // via php.net's annotated manual
!       $message = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace('#\b(" . str_replace('\\', '\\\\', $highlight_match) . ")\b#i', '<span style=\"color:#" . $theme['fontcolor3'] . "\"><b>\\\\1</b></span>', '\\0')", '>' . $message . '<'), 1, -1));
     }
 
     //
--- 1107,1113 ----
     {
        // This was shamelessly 'borrowed' from volker at multiartstudio dot de
        // via php.net's annotated manual
!       $message = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace('#\b(" . str_replace('\\', '\\\\', addslashes($highlight_match)) . ")\b#i', '<span style=\"color:#" . $theme['fontcolor3'] . "\"><b>\\\\1</b></span>', '\\0')", '>' . $message . '<'), 1, -1));
     }
 
     //

Was will uns das sagen?
Nun zuerst sind das zwei Teile. Der eine beginnt mit *** 1107,1113 **** der andere mit --- 1107,1113 ----.
Die Nummer geben an aus welchem Berich der zittierte Code kommt. Das heißt der erste Teil besteht aus den Zeilen 1107 bis 1113 der alten Datei und der andere Teil aus den Zeilen 1107 bis 1113 der neuen Datei.
Was sich geändert hat ist durch das Ausrufezeichen (!) markiert.
Jetzt öffnest du die viewtopic.php suchst den alten Block und ersetzt die alte Zeile durch die neue. Beim Kopieren solltest du diese Änderungsmarkierung natürlich entfernen.

Manchmal weicht die Darstellung der Änderungen vom obengenanten Format ab, z.B. wenn nur eine Zeile hinzugefügt wurde:
Code:
***************
*** 446,451 ****
--- 447,453 ----
           //
           $smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : $HTTP_GET_VARS['smile_code'];
           $smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : $HTTP_GET_VARS['smile_url'];
+          $smile_url = phpbb_ltrim(basename($smile_url), "'");
           $smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? $HTTP_POST_VARS['smile_emotion'] : $HTTP_GET_VARS['smile_emotion'];
           $smile_code = trim($smile_code);
           $smile_url = trim($smile_url);


Jetzt musst du jede einzelne .rej Datei abarbeiten. Natürlich solltest keine einzige vergessen.

.orig Dateien
Die [i].orig[/g] Dateien enthalten den orginalen Zustand der Datei. Sie werden angelegt wenn sich das Programm nicht ganz sicher ist was es tut oder wenn Änderungen fehlschlagen.

"Trockenlauf"
Wenn du möchtest kannst du zuerst eine Trockenübung machen, das heißt das Programm zeigt dir nur an was es machen würde; ändert aber in Wirklichkeit nichts an den Dateien. Du musst dazu nur den Parameter --dry-run anhängen.
Code:
patch -p1 --dry-run -i phpBB-2.0.15_to_2.0.18.patch


Zeilenumbruch Fehler
Falls beim Patchen sehr viele Fehlermeldungen auftauchen liegt das oft an den Zeilenumbrüchen. Kurz gesagt: Unter Linux und Windows gibt es verschiedene Arten von Zeilenumrüchen. phpBB verwendent Linuxumbrüche. Manche Editoren unter Windows können zwar Linuxumbrüche lesen, speichern die Datei allerdings mit Windowsumbrüchen. In so einem Fall kann patch die Zeilen nicht mehr vergleichen. Also musst du die Windowsumbrüche wieder in Linuxumbrüche umwandeln. Am einfachsten geht das mit dem "Zeilenumbrüche umwandeln"-Script befindet.
Da Windows von Haus aus keine Shell-Scripte lesen kann brauchen wir dafür einen Interpreter. In diesem Fall ist das die sh.exe die natürlich wieder nach C:\Windows\System32 oder C:\WinNT\System32 kopiert wird.
Das Script xxx.sh kopierst du wieder in dein Arbeitsverzeichnis und führst es mit folgendem Befehl aus:
Code:
sh xxx.sh

(Datei noch nicht verfügar)
Danch sollte patch nicht mehr so viel meckern.


Sonstiges

Siehe auch: Update Hilfe

Credits:
Dieser Artikel basiert auf dem Beitrag Patchen unter Windows - Cygwin und patch von CKoenig
Es wurden Teile der Update Hilfe von Pyramide verwendet.
Jensemann steuerte den Aufräumcode für Linux bei.
Und vielen Dank an Naderman für dem Tip mit dem Zeilenumbruch-Script.
MfG Saerdaner am 31. Okt. 2005 von 1:00 bis 3:20



Knowledge Base Offline -> Installation/Konfiguration/Update -> Hinweise zum Update mit Hilfe des Progammes: "patch"