Anwenden von Linux-Patches

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen im Linux Patch Applying Lab! In diesem Lab lernen Sie, wie Sie mit Patches in Linux arbeiten. Patches sind Dateien, die eine Liste der Unterschiede zwischen Dateien enthalten. Sie werden verwendet, um Code zu aktualisieren, Bugs zu beheben und Sicherheitsupdates auf Software-Systeme anzuwenden.

Am Ende dieses Labs werden Sie verstehen, was Patch-Dateien sind, wie Sie ihren Inhalt untersuchen können und wie Sie sie anwenden, um Dateien zu aktualisieren. Diese Fähigkeiten sind grundlegend für die Systemadministration und die Softwareentwicklung in Linux-Umgebungen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/VersionControlandTextEditorsGroup -.-> linux/diff("File Comparing") linux/VersionControlandTextEditorsGroup -.-> linux/patch("Patch Applying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/cp -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/cat -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/cd -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/diff -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/patch -.-> lab-271351{{"Anwenden von Linux-Patches"}} linux/nano -.-> lab-271351{{"Anwenden von Linux-Patches"}} end

Das Verständnis von Patch-Dateien

Patch-Dateien (häufig mit der Endung .diff oder .patch) enthalten die Unterschiede zwischen Dateien. Sie werden verwendet, um Änderungen an Dateien vorzunehmen, ohne die gesamte Datei zu ersetzen. Lassen Sie uns die Patch-Dateien in unserem Projekt untersuchen.

Zunächst navigieren Sie in das Projektverzeichnis und listen Sie den Inhalt des Patches-Verzeichnisses auf:

cd ~/project
ls -l patches/

Im Output sollten Sie mindestens eine Patch-Datei sehen. Lassen Sie uns den Inhalt der Patch-Dateien untersuchen, um zu verstehen, was sie tun:

cat patches/patch_selected.diff

Dies ist eine einfache Textdatei, aber echte Patch-Dateien zeigen typischerweise die Unterschiede zwischen Dateien in einem bestimmten Format. Lassen Sie uns eine typischere Patch-Datei betrachten:

cat patches/fix_sample.diff

Der Output zeigt ein typisches Format für Patch-Dateien:

  • Zeilen, die mit --- beginnen, geben die ursprüngliche Datei an.
  • Zeilen, die mit +++ beginnen, geben die neue Datei an.
  • Zeilen, die mit - beginnen, geben Inhalte an, die entfernt werden.
  • Zeilen, die mit + beginnen, geben Inhalte an, die hinzugefügt werden.

Dieser spezielle Patch wird die dritte Zeile der Datei sample.txt ersetzen.

Jetzt lassen Sie uns den aktuellen Inhalt der Datei betrachten, die gepatcht werden soll:

cat sample.txt

Sie können sehen, dass die Datei drei Zeilen enthält, und laut Patch wird die dritte Zeile geändert.

Anwenden eines Patches

Nachdem wir nun verstehen, was der Patch bewirkt, wollen wir ihn auf unsere Datei anwenden. Der Befehl patch wird in Linux verwendet, um Patches anzuwenden. Die grundlegende Syntax lautet:

patch [options] [originalfile [patchfile]]

Häufige Optionen sind:

  • -p<num>: Entfernt das kürzeste Präfix, das <num> führende Schrägstriche enthält, aus den Dateinamen.
  • -b: Erstellt eine Sicherungskopie der ursprünglichen Datei.
  • -R: Wendet den Patch rückwärts an (entfernt die Änderungen statt sie anzuwenden).

Lassen Sie uns den Patch auf unsere Datei sample.txt anwenden:

cd ~/project
patch -p0 < patches/fix_sample.diff

Die Option -p0 teilt dem patch-Befehl mit, keinen Teil des in der Patch-Datei genannten Dateipfads zu entfernen.

Lassen Sie uns überprüfen, ob der Patch erfolgreich angewendet wurde, indem wir den Inhalt der Datei untersuchen:

cat sample.txt

Sie sollten sehen, dass die dritte Zeile von "The third line needs to be fixed." in "This is the corrected third line." geändert wurde.

Wenn Sie die Änderungen rückgängig machen müssen, können Sie die Option -R verwenden:

patch -p0 -R < patches/fix_sample.diff

Prüfen Sie dann erneut die Datei, um zu sehen, dass die Änderung rückgängig gemacht wurde:

cat sample.txt

Jetzt wenden Sie den Patch erneut an, damit wir mit dem Lab fortfahren können:

patch -p0 < patches/fix_sample.diff

Erstellen Ihres eigenen Patches

Jetzt lernen wir, wie wir unseren eigenen Patch erstellen können. Wir werden Änderungen an einer Datei vornehmen und eine Diff-Datei generieren, die verwendet werden kann, um diese Änderungen auf andere Kopien der Datei anzuwenden.

Zunächst erstellen wir eine neue Textdatei:

cd ~/project
cat > new_file.txt << 'EOF'
This is line one.
This is line two.
This is line three.
EOF

Jetzt erstellen wir eine Kopie dieser Datei, die wir ändern werden:

cp new_file.txt new_file_modified.txt

Bearbeiten Sie die geänderte Datei, um einige Änderungen vorzunehmen:

nano new_file_modified.txt

Ändern Sie die zweite Zeile in "This is the MODIFIED line two." und speichern Sie die Datei, indem Sie Strg+O, Eingabe und dann Strg+X drücken.

Jetzt erstellen wir eine Patch-Datei, die die Unterschiede zwischen diesen beiden Dateien darstellt:

diff -u new_file.txt new_file_modified.txt > patches/my_patch.diff

Lassen Sie uns den von uns erstellten Patch untersuchen:

cat patches/my_patch.diff

Sie sollten eine Diff-Ausgabe sehen, die die von Ihnen an der Datei vorgenommenen Änderungen zeigt.

Jetzt setzen wir die geänderte Datei wieder in ihren ursprünglichen Zustand zurück und wenden dann unseren Patch an, um ihn zu testen:

cp new_file.txt new_file_modified.txt
patch new_file_modified.txt < patches/my_patch.diff

Verifizieren Sie, dass der Patch angewendet wurde:

cat new_file_modified.txt

Sie sollten sehen, dass die zweite Zeile in "This is the MODIFIED line two." geändert wurde.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Arbeit mit Patches in Linux gelernt:

  1. Sie haben Patch-Dateien untersucht und deren Format verstanden.
  2. Sie haben einen Patch angewendet, um eine Datei zu ändern.
  3. Sie haben Ihren eigenen Patch erstellt, indem Sie eine Datei geändert und eine Diff-Datei generiert haben.

Diese Fähigkeiten sind für die Softwareentwicklung, die Systemadministration und die Mitarbeit an Open-Source-Projekten von großem Wert. Patches ermöglichen es Teams, bestimmte Codeänderungen zu teilen, ohne ganze Dateien auszutauschen, was die Zusammenarbeit effizienter macht.

Die Befehle patch und diff sind leistungsstarke Werkzeuge in der Linux-Umgebung, die die Versionskontrolle, die Codeverwaltung und effiziente Updates von Softwaresystemen ermöglichen.