Patch – das magische Wort unter Linux. So viele Mythen, so viel Traum, so viel Ruiniert oder angestückelt. Nur – was ist das, ein Patch? Ein Patch ist wörtlich übersetzt einfach ein Flicken, den man im Falle eines Loches drüber näht – ein Stück Stoff, eine Veränderung am Ganzen. Unter Linux sogar eine Anleitung zur Veränderung.
Wenn Programmierer etwas machen und ihre Arbeit weitergeben, ist es nicht zielführend, immer den ganzen Pulk an nicht veränderten Dateien mit zu übertragen. Also wird ein Patch erstellt, der nur die Veränderungen darstellt – ein Textfile mit bestimmtem Format. Ein gutes Beispiel ist dafür meist der Patch zum aktuellsten Kernel-Snapshot.
Aber wie generiert man das Ganze? Ich beginne hier einmal mit einem kleinen Programm namens ‚diff‘. Wie der Name schon sagt, zeigt es Unterschiede zwischen zwei Dateien auf. Mit Hilfe dieses kleinen Tools kann man genau sehen, was sich bei Dateien verändert hat. Aber brauchbar ist die Ausgabe noch nicht wirklich, wenn auch schon sehr nahe an dem, was wir wollen. Also versuchen wir es einmal mit ein paar Parametern:
diff -Naur file.old file.new > update.patch
Et voilà, hier ist unser Patch. Wer einen Haufen von Dateien überprüfen möchte, der kann auch ganze Verzeichnisse angeben. Und wenn jemand gar Entwickler ist, der nutzt einfach eine Revisionsverwaltung, die eben diff benutzt, wie zum Beispiel Subversion.
Nun wo wir unseren Patch in den Händen haben, wollen wir einmal das Ganze einspielen – also den Weg des Anderen gehen, der das neue File noch nicht kennt. Wir patchen.
Wenn der patch eine relative Pfadangabe verwendet, reicht -p1 als Parameter ansonsten kommt -p0 zum Zug:
patch -p0 < update.patch patch -p1 < update.patch
Das Ergebnis sollte in etwa so aussehen:
patching file file.old
Wenn wir nun die beiden Dateien file.new und file.old vergleichen, stellen wir fest, dass die beiden Dateien nun gleich sind. Der Patch hat unser file.old auf Stand gebracht.
Rei’s world » Blog Archive » XFS Barriers und Der neue 2.6.27 Kernel says:
[…] den Patch hier zur Verfügung. Wie man Patches benutzt, beschreibt mein Blog-Kollege Stargazer in diesem Posting […]