[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [wikipedia:patch_(Unix):patch] hilft beim [wikipedia:Patch_(Software):Patchen] von Software, also dem Verbessern oder Erweitern der Fähigkeiten eines Programms am Rohcode. Patches werden wegen der besseren Wartbarkeit meist per [:Versionsverwaltung: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] {{{#!vorlage Paketinstallation patch }}} = Aufruf = Die allgemeine Syntax lautet [2]: {{{#!vorlage Befehl patch [OPTIONEN] ORIGINALDATEI < PATCHDATEI }}} patch kennt folgende Optionen: {{{#!vorlage Tabelle Optionen von patch +++ Option Beschreibung +++ `-p NUM` zieht `NUM` führende Komponenten von Dateinamen ab, siehe [#Beispiele 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 = {{{#!vorlage Befehl 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: {{{#!code diff +++ /dev/null }}} == Patch rückgängig machen == Um einen Patch (mit Striplevel 1) rückgängig zu machen: {{{#!vorlage Befehl patch -R -p1 ORIGINALDATEI < PATCHDATEI }}} = Links = == Intern == * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle * [:diff:] * [:Git#Patch-erstellen:Patch mit Git erstellen] == Extern == * [http://savannah.gnu.org/projects/patch/ GNU patch] #tag: Shell, Programmierung