patch

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Installation
  2. Aufruf
  3. Beispiele
  4. Links

Wiki/Icons/terminal.png patch hilft beim Patchen von Software, also dem Verbessern oder Erweitern der Fähigkeiten eines Programms am Rohcode. Patches werden wegen der besseren Wartbarkeit meist per Versionskontrolle verwaltet. Patch-Dateien sind meist mit .diff- oder .patch-Endung zu finden.

Installation

patch ist in jeder Linux-Standardinstallation enthalten, kann aber über folgenden Befehl nachinstalliert werden: [1]

Paketliste zum Kopieren:

sudo apt-get install patch 

Oder mit apturl die Pakete installieren. Link: apt://patch

Aufruf

Die allgemeine Syntax lautet [2]:

patch [OPTIONEN] ORIGINALDATEI < PATCHDATEI 

patch kennt folgende Optionen:

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

Beispiele

patch -p1 ORIGINALDATEI < PATCHDATEI 

Die Option -p gibt die Anzahl an Stripleveln an, also der Anzahl der Verzeichnistiefe, die in der Patch-Datei von den Pfaden abgezogen wird. Bei a/foobar/barfoo/foo führt also -p1 zum einmaligen Abziehen und es wird somit die Datei foobar/barfoo/foo vom aktuellen Verzeichnis aus gepatched. Bei -p2 wäre es die Datei barfoo/foo. Das Ausgangsverzeichnis (standardmäßig das Aktuelle) kann mit der Option -d geändert werden.

Dateien, die erstellt oder gelöscht werden, sind in der Patch-Datei durch folgende Zeile zu erkennen:

1
+++ /dev/null

Patch rückgängig machen

Um einen Patch (mit Striplevel 1) rückgängig zu machen:

patch -R -p1 ORIGINALDATEI < PATCHDATEI 

Intern

Extern