Patch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Wie funktioniert ein Patch= | =Wie funktioniert ein Patch= | ||
* Patches machen Änderungen am Source-Code, um Features zu implementieren, Sicherheitslücken beheben oder Konfigurationen anpassen | |||
* Änderungen werden aus einer ''.diff''-Datei gelesen und an Zieldateien angewendet | |||
* Manuell kann man diese mit dem Befehl '''patch''' durchführen | |||
* Automatisches Versionsmanagement kann man mit '''[[git]]''' erreichen | |||
=Original Datei= | =Original Datei= | ||
* '''vim interfaces.org''' | |||
auto eth0 | |||
iface eth0 inet static | auto eth0 | ||
iface eth0 inet static | |||
address XX.XX.XX.XX/YY | |||
gateway ZZ.ZZ.ZZ.ZZ | |||
=Gewünschte Datei= | =Gewünschte Datei= | ||
* '''vim interfaces.new''' | |||
auto eth0 | |||
iface eth0 inet static | auto eth0 | ||
address 192.168.88.99/24 | iface eth0 inet static | ||
gateway 192.168.88.1 | address 192.168.88.99/24 | ||
</ | gateway 192.168.88.1 | ||
=Erzeugen einer ''.diff''-Datei= | |||
* '''diff interfaces.org interfaces.new | tee interfaces.diff''' | |||
3,4c3,4 | |||
< address XX.XX.XX.XX/YY | |||
< gateway ZZ.ZZ.ZZ.ZZ | |||
--- | |||
> address 192.168.88.99/24 | |||
> gateway 192.168.88.1 | |||
= Patch anwenden = | |||
* '''patch interfaces.org''' < interfaces.diff | |||
* '''cat interfaces.org''' | |||
auto eth0 | |||
iface eth0 inet static | |||
address 192.168.88.99/24 | |||
gateway 192.168.88.1 | |||
=Optionen von patch= | |||
{| class="wikitable" | |||
|- | |||
! Option !! Beschreibung | |||
|- | |||
| -p NUM || Zieht NUM führende Komponenten von Dateinamen ab, siehe Beispiele | |||
|- | |||
| -E || Löscht Zieldateien, die nach dem Patchen leer sind | |||
|- | |||
| -b || Macht ein Backup der Originalinhalte jeder Datei | |||
|- | |||
| --backup-if-mismatch || Macht nur ein Backup, wenn der Patch nicht genau passt | |||
|- | |||
| --verbose || Gibt zusätzliche Informationen über vollführte Arbeiten aus | |||
|- | |||
| --dry-run || Ändert die Dateien nicht wirklich; gibt nur aus, was passieren würde | |||
|- | |||
| -d VERZEICHNIS || Ändert erst das Arbeitsverzeichnis zu VERZEICHNIS | |||
|- | |||
| -R || Patch Rückgängig machen | |||
|} | |||
Aktuelle Version vom 27. Juni 2023, 12:07 Uhr
Wie funktioniert ein Patch
- Patches machen Änderungen am Source-Code, um Features zu implementieren, Sicherheitslücken beheben oder Konfigurationen anpassen
- Änderungen werden aus einer .diff-Datei gelesen und an Zieldateien angewendet
- Manuell kann man diese mit dem Befehl patch durchführen
- Automatisches Versionsmanagement kann man mit git erreichen
Original Datei
- vim interfaces.org
auto eth0 iface eth0 inet static address XX.XX.XX.XX/YY gateway ZZ.ZZ.ZZ.ZZ
Gewünschte Datei
- vim interfaces.new
auto eth0 iface eth0 inet static address 192.168.88.99/24 gateway 192.168.88.1
Erzeugen einer .diff-Datei
- diff interfaces.org interfaces.new | tee interfaces.diff
3,4c3,4 < address XX.XX.XX.XX/YY < gateway ZZ.ZZ.ZZ.ZZ --- > address 192.168.88.99/24 > gateway 192.168.88.1
Patch anwenden
- patch interfaces.org < interfaces.diff
- cat interfaces.org
auto eth0 iface eth0 inet static address 192.168.88.99/24 gateway 192.168.88.1
Optionen von patch
| Option | Beschreibung |
|---|---|
| -p NUM | Zieht NUM führende Komponenten von Dateinamen ab, siehe Beispiele |
| -E | Löscht Zieldateien, die nach dem Patchen leer sind |
| -b | Macht ein Backup der Originalinhalte jeder Datei |
| --backup-if-mismatch | Macht nur ein Backup, wenn der Patch nicht genau passt |
| --verbose | Gibt zusätzliche Informationen über vollführte Arbeiten aus |
| --dry-run | Ändert die Dateien nicht wirklich; gibt nur aus, was passieren würde |
| -d VERZEICHNIS | Ändert erst das Arbeitsverzeichnis zu VERZEICHNIS |
| -R | Patch Rückgängig machen |