Patch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (8 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 |
| − | + | iface eth0 inet static | |
| − | + | address 192.168.88.99/24 | |
| − | + | gateway 192.168.88.1 | |
| − | =Erzeugen einer | + | |
| − | *diff interfaces.org interfaces.new | + | =Erzeugen einer ''.diff''-Datei= |
| + | |||
| + | * '''diff interfaces.org interfaces.new | tee interfaces.diff''' | ||
| + | |||
3,4c3,4 | 3,4c3,4 | ||
< address XX.XX.XX.XX/YY | < address XX.XX.XX.XX/YY | ||
| Zeile 24: | Zeile 34: | ||
> address 192.168.88.99/24 | > address 192.168.88.99/24 | ||
> gateway 192.168.88.1 | > 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, 10: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 |