Patch: Unterschied zwischen den Versionen

Aus Xinux Wiki
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=
;interfaces.org
+
 
<pre>
+
* '''vim interfaces.org'''
auto eth0
+
 
iface eth0 inet static
+
auto eth0
address XX.XX.XX.XX/YY
+
iface eth0 inet static
gateway ZZ.ZZ.ZZ.ZZ
+
  address XX.XX.XX.XX/YY
</pre>
+
  gateway ZZ.ZZ.ZZ.ZZ
 +
 
 
=Gewünschte Datei=
 
=Gewünschte Datei=
;interfaces.new
+
 
<pre>
+
* '''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  
</pre>
+
  gateway 192.168.88.1
=Erzeugen einer Diff Datei=
+
 
*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