7 Patch-Beispiele für den Befehl zum Anwenden Diff-Patch-Dateien in Linux

Wenn es eine Sicherheitslücke geschlossen für eine bestimmte Software, sind wir in der Regel ein binäres Upgrade der Paket-Management-Tools wie yum oder apt-get verwenden.







Aber es könnte Situation, wo Sie eine Software installiert haben, indem sie sie aus dem Quellcode zu kompilieren.

In dieser Situation, wie bewerbe Sie das Sicherheitsupdate für die Software?

Die Antwort ist, den Sicherheitspatch herunterzuladen und zu dem ursprünglichen Quellcode anwenden und die Software neu zu kompilieren.

Dieses Tutorial erklärt, wie eine Patch-Datei mit diff erstellen, und wenden Sie es Patch-Befehl.

Eine Patch-Datei ist eine Textdatei, die die Unterschiede zwischen zwei Versionen derselben Datei enthält (oder gleichen Quelle-Baum). Patch-Datei wird unter Verwendung diff Befehl erstellt.

1. Erstellen Sie eine Patch-Datei diff

Um dies zu verstehen, lassen Sie uns ein kleines C-Programm namens hello.c erstellen

Kopieren Sie nun die hello.c hello_new.c

Bearbeiten Sie die hello_new.c wie unten gezeigt, einige kleine Änderungen vornehmen:

Schließlich erstellen Sie die Patch-Datei diff Befehl verwenden, wie unten dargestellt:

Der obige Befehl wird eine Patch-Datei mit dem Namen „hello.patch“ erstellen.

2. Tragen Sie Patch-Datei mit Patch-Befehl

Der „Patch“ Befehl nimmt eine Patch-Datei als Eingabe und anwenden, um die Unterschiede zu einer oder mehreren Original-Datei (en), gepatchte Versionen produziert.

Verwenden Sie den Patch-Befehl, wie unten gezeigt, um die hello.patch auf den ursprünglichen Quellcode hello.c anzuwenden.







Die hello.patch Datei enthält den Namen der Datei gepatcht werden. Sobald die Datei gepatcht ist, sowohl hello.c und hello_new.c den Inhalt haben.

3. Erstellen Sie ein Patch aus einer Source-Tree

Das obige Beispiel war so einfach, dass es nur mit einer Datei arbeitet. Wir werden sehen, wie erstellen und Patch für einen kompletten Quellbaum gilt von „OpenVPN“ Quellcode als Beispiel genommen wird.

Ich habe 2-Version von OpenVPN, openvpn-2.3.2 und openvpn-2.3.4 heruntergeladen.

Jetzt werden wir den Patch mit dem folgenden Befehl erstellen.

Der obige Befehl arbeitet rekursiv und die Unterschiede finden, und diese Unterschiede in der Patch-Datei platzieren.

4. Wenden Sie Patch-Datei auf einen Quellcode-Baum

Die folgenden Patch-Befehle können verwendet werden, um den Patch zu Quellbaum anzuwenden.

Bitte beachten Sie, dass wir den Befehl von / usr / src / ausgeführt werden. Die Patch-Datei enthält alle Dateinamen in absolutem Pfadformat (von der Wurzel). Wenn wir also von / usr / src ausführen, ohne die Option „-p“, wird es nicht richtig funktionieren.

-p3 teilt den Patch Befehl 3 Schrägstriche aus den Dateinamen in der Patch-Datei zu überspringen. In unserem Fall ist der Dateiname in Patch-Datei „/usr/src/openvpn-2.3.2/aclocal.m4“, da sie „-p3“, 3 Schrägstriche gegeben haben, das heißt, bis / usr / src / ignoriert.

5. Nehmen Sie eine Sicherung vor dem Patch-Anwendung unter Verwendung von -b

Sie können eine Sicherung der ursprünglichen Datei, bevor Sie den Patch mit dem Befehl Option -b Anwendung wie unten gezeigt.

Nun werden Sie einen Dateinamen „hello.c.orig“ haben, die die Sicherung des ursprünglichen hello.c ist.

6. Überprüfen Sie den Patch ohne Anwendung (Trockenlauf Patch-Datei)

Sie können trocken den Patch-Befehl ausführen, um zu sehen, wenn Sie irgendwelche Fehlermeldungen erhalten, ohne die Datei -dry-run Option zu Patchen wie unten dargestellt.

Sie können sehen, dass hello.c ist überhaupt nicht verändert.

7. Rückwärts einen Patch, der bereits angewendet wird (Undo eines Pflasters)

Sie können die Option -R verwenden, um einen Patch rückgängig, die bereits angewendet wird.

Sie können von der Dateigröße feststellen, dass das Pflaster, das bereits angewendet wird, umgekehrt wird, wenn wir die Option -R verwendet.







In Verbindung stehende Artikel