Patchen unter Windows - Cygwin und patch

Eine Neuinstallation von phpBB 2.0 wird auf phpBB.de nicht mehr unterstützt.
Siehe auch Entwicklungs-Ende von phpBB 2.0 - Auswirkungen auf phpBB.de
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.

Eine Neuinstallation von phpBB 2.0 wird auf phpBB.de nicht mehr unterstützt.
Siehe auch Entwicklungs-Ende von phpBB 2.0 - Auswirkungen auf phpBB.de
CKoenig
Mitglied
Beiträge: 30
Registriert: 26.06.2005 21:05
Wohnort: Bonn
Kontaktdaten:

Patchen unter Windows - Cygwin und patch

Beitrag von CKoenig »

Hi,

da ich keinen solchen Thread gefunden habe, aber an einigen Stellen über entsprechende Fragen gestolpert bin, hab ich mal einen neuen aufgemacht. Ich denke viele die unter Windows arbeiten (warum auch immer), könnte dies interessieren. Anhand von Zitaten (aus Installation eines Updates), hier mal eine kleine Einleitung:


Anmerkungen zur Installation von Cygwin/Patch
ash0815 hat geschrieben:ich hatte mir die Aktuelle Cygwin heruntergeladen und installiert.
ich wollte von Version 2.0.11 auf 2.0.15 updaten.
1.) Bei cygwin.com läd man zuerst einen Installer runter (setup.exe). Dieser holt sich die Installationspakete aus dem Netz, und macht bei einer Standardinstallation nur ein Minimalsystem verfügbar (simuliert eine Linux bash soweit ich das gesehen hab; kann aber wohl einiges mehr (steinigt mich jetzt bitte nicht, wenn ich das grad komplett unterbewertet hab :wink:))

2.) will man mit "patch" arbeiten muss man im weiteren Installationsverlauf beim Schritt "Select Packages" (nachdem man eine Download Site ausgewählt hat) explizit das "Patch"-Paket auswählen (unter "All->Utils->patch: Apply a diff file to an original")- sonst wird es nicht installiert und man kann es nicht nutzen.

3.) Nachtrag: Will man die Cygwin Kommandos auch in der Windows Kommandozeile nutzen, so muss man das /cygwin/bin-Verzeichnis in den Windows Path einbauen. (Ist für den weiteren Verlauf dieser Beschreibung unerheblich)


Wie patchen?

Ist man dann soweit, und hat die Patchdateien in das Forenverzeichnis kopiert, startet man Cygwin (über das Icon im Startmenü) und wechselt z.B. mit "cd D:\MeineInternetdateien\phpbb" direkt in das Verzeichnis (Vorsicht mit Leerzeichen, die müssen mit einem Backslash escaped werden (also "Eigene\ Dateien" für "Eigene Dateien")), und dort dann den patch-Befehl geben.

ash0815 hat geschrieben:Cygwin meldet: patch: **** strip count l is not a number

Woran kann das liegen ?
Hehe, den hatte ich auch. Der Aufruf ist "patch -p1 -i" nicht "patch -pl -i" - also eine Eins (1), und kein kleines L direkt nach dem "-p" - ist bei manchen Schriftsätzen leider nicht so leicht zu unterscheiden


Der Patchablauf - Übersicht

Der Ablauf sieht dann unter Windows in etwa wie folgt aus:

1.) Die phpBB Patchdateien runterladen und in das Forumverzeichnis entpacken. (sollte einige .patch Dateien und die Verzeichnisse cache, contrib, docs und install erstellen)
2.) Cygwin starten
3.) Im Cygwin-Fenster ins Forumverzeichnis wechseln: also z.B.: "cd D:\MeineInternetdateien\phpbb"
4.) Dateien patchen: z.B. "patch -p1 -i phpBB-2.0.4_to_2.0.15.patch" im Cygwin-Fenster eingeben, um von Version 2.0.4 auf 2.0.15 zu patchen
5.) Im Browser noch http://www.deinedomain.de/phpBB/install ... latest.php aufrufen.
6.) Die Verzeichnisse install und contrib löschen

Evtl. müsst ihr noch spezielle Aktionen zwischen Schritt 4 und 5 ausführen (ich hol hier mal was aus, da ich's immer was besser finde, wenn alle Informationen an einer Stelle zu finden sind - hoffe mich erschlägt keiner dafür, weil's schon anderswo stehen sollte).


Was passiert bei Fehlern?

Insbesondere müsst ihr die Fehlerausgaben des patch Aufrufes bearbeiten. Diese treten meist bei Foren mit Mods auf, und sehen dann z.B. wie folgt aus:

Code: Alles auswählen

1 out of 2 hunks FAILED -- saving rejects to file viewtopic.php.rej
In diesem Fall ist sogar der kritische Punkt des Patches (das war 2.0.15 auf 2.0.16) schiefgegangen. Was nun? PANIK!!! ... Nein, ihr schaut Euch die Datei viewtopic.php.rej an, und seht z.B. folgendes (Don't Panic! :wink:):

Code: Alles auswählen

***************
*** 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 der erste Teil ist das zu ersetztende Fragment, der zweite Teil das Codestück, was an der Stelle des ersten Stückes einzusetzten ist. Die Zeilen "*** 1107,1113 ****" und "--- 1107,1113 ----" geben an dass das Originalfragment (ohne Mods) in den Zeilen 1107 bis 1113 zu finden war, und das neue Fragment dort eingesetzt werden muss - durch Mods verschieben sich meist die Zeilennummern, und der Patcher findet das Fragment nicht mehr. Wichtig ist in jedem Fall die Zeile mit dem Ausrufungszeichen davor. Das Ausrufungszeichen müsst ihr nach dem Einfügen natürlich entfernen. Also nun die viewtopic.php öffnen, die entsprechende Stelle suchen (hier half z.B. die Suche nach der Zeile "// This was shamelessly 'borrowed' from volker at multiartstudio dot de"), und das alte Fragment durch das neue Fragment ersetzen (Ausrufungszeichen entfernen). Das war's. Das müsst ihr dann mit jeder .rej Datei machen (die ggf. auch mehr als nur eine Stelle haben, die zurückgewiesen wurde), sonst seid Ihr nicht wirklich auf der gewünschten Version angekommen.


Sonstiges

Schaut aber auch noch in die Update Hilfe zu Eurer Version, ob es spezielle Dinge zu beachten gibt.


Bei mir hat das ohne Probleme funktioniert - gestern von 2.0.4 auf 2.0.15, heute dann noch auf die 2.016 - und meine Mods funktionieren auch noch :wink:

Viele Grüsse,
Carsten

PS: Ggf. weitere Fragen hierzu bitte hier im Thread stellen, und nicht per PN. Danke.
Zuletzt geändert von CKoenig am 09.11.2005 17:45, insgesamt 3-mal geändert.
futureSPACE - Advanced spacedrives and the future of human spaceflight.
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

man könnte für die leute die probleme mit cygwin noch nen archiv erstellen, dass nur das patch program, und die dazugehörigen dateien enthält.
DreamFlasher
Mitglied
Beiträge: 7
Registriert: 16.12.2004 23:42
Kontaktdaten:

Beitrag von DreamFlasher »

Danke für die Anleitung!
Was mir noch gefehlt hat, war der Hinweis hier: http://www.phpbb.de/viewtopic.php?t=72083#403713
synack hat geschrieben:Cygwin kann nur auf Verzeichnisse zugreifen unterhalb der Installation(ohne was zu ändern).
Einfach dein phpbb Verzeichnis in ein Verzeichnis deiner wahl kopieren und weiter in Text. (also unterhalb z.B. c:\cygwin\deine wahl)
Am besten vorher ein Verzeichnis anlegen (mkdir "deine wahl") dann cd "deine wahl".
Außerdem: Wie navigiere ich in diesem Cygwin-Fenster?
http://cygwin.com/faq/faq_3.html#SEC36
Use the 'cygpath' utility. Type 'cygpath --help' for information. For example (on my installation):

bash$ cygpath --windows ~/.bashrc
D:\starksb\.bashrc
bash$ cygpath --unix C:/cygwin/bin/cygwin.bat
/usr/bin/cygwin.bat
bash$ cygpath --unix C:\\cygwin\\bin\\cygwin.bat
/usr/bin/cygwin.bat

Note that bash interprets the backslash '\' as an escape character, so you must type it twice in the bash shell if you want it to be recognized as such.
Das kannst du ja noch oben einfügen :)
CKoenig
Mitglied
Beiträge: 30
Registriert: 26.06.2005 21:05
Wohnort: Bonn
Kontaktdaten:

Beitrag von CKoenig »

DreamFlasher hat geschrieben:
synack hat geschrieben:Cygwin kann nur auf Verzeichnisse zugreifen unterhalb der Installation(ohne was zu ändern).
Einfach dein phpbb Verzeichnis in ein Verzeichnis deiner wahl kopieren und weiter in Text. (also unterhalb z.B. c:\cygwin\deine wahl)
Am besten vorher ein Verzeichnis anlegen (mkdir "deine wahl") dann cd "deine wahl".
Kann ich nicht bestätigen. Ich habe bei mir Cygwin unter C:\Programme\cygwin installiert, und konnte ohne Probleme in alle Verzeichnisse auch oberhalb der Installation wechseln - Im Beispiel oben mittels cd D:\MeineInternetdateien\phpbb - also nicht mittels cd .., sondern mittels cd [Laufwerksbuchstabe]:\Mein Verzeichnis - von dort konnte ich dann mittels cd .. oder cd Unterverzeichnis beliebig weiter navigieren. An den Einstellungen von Cygwin habe ich nichts geändert.
DreamFlasher hat geschrieben:Außerdem: Wie navigiere ich in diesem Cygwin-Fenster?
http://cygwin.com/faq/faq_3.html#SEC36
Use the 'cygpath' utility.
Dies ist zur Navigation nicht erforderlich. Dies kann man dann machen, wenn man statt den in Windows üblichen Pfaden Pfadangaben wie unter Unix nutzen will - ist aber für das Patchen gar nicht notwendig - Die Überschrift der Anleitung in den FAQ ist da wohl etwas missverständlich: "How do I convert between Windows and UNIX paths?" - kann man, muss man aber nicht. Allerdings sind die Cygwin FAQs durchaus nett, wenn man sich unter Windows echtes Bash Feeling verpassen will. :wink:

Viele Grüsse,
Carsten
elbling
Mitglied
Beiträge: 14
Registriert: 15.06.2004 01:06

Cygwin/Patch

Beitrag von elbling »

Cygwin/Patch

habe versucht dieses Cygwin-Dingens runterzuladen....aber dann will das Teil nicht so wie ich, es stellt einen Fehler fest und bricht ab. Als Setup.exe ist es zu sehen - aber beim Ausführen halt, da streikt es.

Ich will Updaten von 2.015 auf 2.017, habe die entsprechenden Ordner schon per FTP rübergeschoben, ich muß noch das Patch ausführen.

Ich gehe davon aus, dass das Patch diverse Änderungen in den Dateinen macht - kann ich das auch von Hand? Wenn ja, wo steht, was geändert werden muss???

Sorry elbling
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Re: Cygwin/Patch

Beitrag von jasc »

elbling hat geschrieben: Ich gehe davon aus, dass das Patch diverse Änderungen in den Dateinen macht - kann ich das auch von Hand? Wenn ja, wo steht, was geändert werden muss???
Hier findest du die manuellen Updateanleitungen (links in der Navigationsleiste mal runterscrollen)
Niteman
Mitglied
Beiträge: 34
Registriert: 27.11.2003 15:27
Wohnort: Kassel

Diese Anleitung...

Beitrag von Niteman »

Diese Anleitung funktioniert auch mit dem MAC OS-X

Dateien wie oben beschrieben in den php-Ordner legen
Im Terminal in das Verzeichnis wechseln und den angegebenen Befehl eingeben.

Bei Fehlermeldung eben diese Dateien (ich mache es mit BBEdit) aufrufen, die Änderungen machen und ab geht`s.


Danke für die verständliche Anleitung deinerseits.

LG
die zukunft ist auch nicht mehr, was sie mal war!
Nyks
Mitglied
Beiträge: 8
Registriert: 15.04.2005 14:52

Beitrag von Nyks »

Hallo!

Gehe ich richtig davon aus, dass der Einsatz des Patch-Befehles vorraussetzt, dass man einen eigenen Server besitzt, auf dem phpBB läuft?

Ich betreibe ein kleines phpBB 2.0.14 auf einem Webspace-Ordner, zu dem ich FTP-zugriff habe. In dem phpBB müssen Datein hochgeladen werden können, so dass ich den Attachment Mod installiert habe. Nun dachte ich, dass ein Update mal sinnvoll wäre ... und bin daher auf diesen Patch-Befehl gestossen. Kann ich dieses Update auch mit FTP- und "phpMyAdmin mysql" durchführen?
CKoenig
Mitglied
Beiträge: 30
Registriert: 26.06.2005 21:05
Wohnort: Bonn
Kontaktdaten:

Beitrag von CKoenig »

Nyks hat geschrieben:Gehe ich richtig davon aus, dass der Einsatz des Patch-Befehles vorraussetzt, dass man einen eigenen Server besitzt, auf dem phpBB läuft?
Nein. Du hast ja warscheinlich auf deinem lokalen Rechner eine Kopie Deiner Website, die Du von Zeit zu Zeit hochlädst, wenn du was geändert hast - auf diese Kopie kannst du patch anwenden (dafür Cygwin installieren, oder Linux benutzen), und dann die gepatchten Dateien hochladen.

Viele Grüsse,
Carsten König
futureSPACE - Advanced spacedrives and the future of human spaceflight.
Benutzeravatar
Kampf Katze
Mitglied
Beiträge: 126
Registriert: 08.11.2004 19:36
Wohnort: Berlin

Beitrag von Kampf Katze »

Nette Anleitung und leicht verständlich, nur habe ich das Problem das ich A: mein phpBB auf einem Webserver habe der gemietet ist und B: habe ich OS X. Ich kann zwar via Terminal oder X11 auch über FTP auf meinen Server zugreifen, doch den Patchbefehl ausführen führt zu einem ?invalid command.

Also nehme ich mal an, das jener Befehl nicht im FTP funktioniert sondern nur lokal. Oder kennt jemand einen weg den Patchbefehl dennoch aus zu führen?

Ich bin nämlich nicht so spitz darauf, die installierten Mods (auch wenns nicht viele sind, aber dafür teils komplexe) neu zu installieren.
Gesperrt

Zurück zu „phpBB 2.0: Installation und Update“