Patch

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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