Patchen in ABS

Ein Patch beschreibt eine Gruppe von Linienänderungen für eine oder mehrere Dateien. Patches werden typischerweise verwendet, die Änderung des Quellcodes zu automatisieren.

Hinweis: Wenn Sie nur eine oder zwei Zeilen ändern müssen, möchten Sie vielleicht stattdessen sed zu verwenden.







Das Diff-Tool vergleicht Dateien Zeile für Zeile, wenn Sie seine Ausgabe speichern Sie einen Patch erhalten haben, z.B. diff -ura foo bar> Patch. Wenn Sie Verzeichnisse passieren diff die Dateien vergleichen, die sie enthalten.

  1. Löschen Sie das src-Verzeichnis, wenn Sie das Paket bereits aufgebaut haben.
  2. Führen Sie makepkg -o, die herunterladen und die Quelldateien, angegeben in PKGBUILD extrahieren. sondern bauen sie nicht.
  3. Erstellen Sie zwei Kopien des extrahierten Verzeichnisses im Verzeichnis src, ein als Kopie der Datei und einen für Ihre geänderte Version. Wir rufen sie package.orig und package.new.
  4. Nehmen Sie die Änderungen im package.new Verzeichnis.
  5. Führen Sie diff -ura package.orig package.new --color und überprüfen, ob der Patch gut aussieht.
  6. Führen Sie diff -ura package.orig package.new> package.patch den Patch zu erstellen.
  7. Wechseln Sie in das Verzeichnis package.orig und wenden Sie den Patch mit Patch -p1 <. /package.patch. Verify that the patch is working by building and installing the modified package with makepkg -ei .

Hinweis: Sie können auch erstellen Patches mit Git mit Git Diff oder git format-patch [1].

In diesem Abschnitt wird beschrieben, wie Patches anzuwenden, die Sie aus dem Internet aus einem PKGBUILD ‚s prepare () Funktion erstellt oder heruntergeladen werden. Folge diesen Schritten:

  1. Fügen Sie einen Eintrag mit der Source-Array des PKGBUILD für die Patch-Datei, von der ursprünglichen Quelle URL durch ein Leerzeichen getrennt. Wenn die Datei online verfügbar ist, können Sie die vollständige URL zur Verfügung stellen und es wird automatisch heruntergeladen und im src-Verzeichnis abgelegt werden. Wenn es ein Patch Sie selbst erstellt oder anderweitig nicht verfügbar ist, sollten Sie die Patch-Datei im selben Verzeichnis wie die PKGBUILD Datei, platzieren und nur den Namen der Datei in das Quellarray hinzufügen, so dass es in die src kopiert Verzeichnis. Wenn Sie die PKGBUILD verteilen. Sie sollten natürlich, umfassen den Patch mit dem PKGBUILD.
  2. Dann updpkgsums verwenden, um das MD5-Summen-Array zu aktualisieren. Oder manuell einen Eintrag zur md5sums Array hinzuzufügen; Sie können mit md5sum Tool Summe Ihrer Patch erzeugen.
  3. Erstellen Sie die prepare () Funktion in der PKGBUILD, wenn man nicht bereits vorhanden ist.
  4. Der erste Schritt ist in das Verzeichnis zu ändern, die gepatcht werden muss (in der prepare () Funktion, nicht auf Ihrem Terminal! Sie wollen den Prozess automatisieren der Anwendung des Patches). Sie können dies tun, mit so etwas wie cd $ srcdir / $ pkgname- $ pkgver oder etwas ähnliches. $ Pkgname- $ pkgver ist oft der Name eines Verzeichnisses von entpacken einer heruntergeladenen Quelldatei erstellt, aber nicht in allen Fällen.
  5. Nun müssen Sie einfach den Patch aus diesem Verzeichnis zu übernehmen. Dies ist sehr einfach durch das Hinzufügen






auf Ihre prepare () Funktion, pkgname .patch auf den Namen der Datei, die Änderung die diff (die Datei, die automatisch in der src-Verzeichnis kopiert wurde, weil es in dem Quellfeld der PKGBUILD Datei war) enthält.

Ein Beispiel prepare-Funktion:

Wenn Sie nicht über eine Option -p anwenden, werden sie alle Verzeichnisstruktur starten. Das ist in Ordnung, wenn alle Dateien im Basisverzeichnis sind, aber wenn der Patch auf myversion erstellt wurde / und eine der bearbeiteten Dateien war myversion / src / Datei. und führen Sie den Patch ohne Option -p aus yourversion. es wird versuchen, eine Datei mit dem Namen yourversion / Datei zu patchen.

Die meisten Entwickler erstellen Patches aus dem Elternverzeichnis des Verzeichnisses, das gepatcht wird, so -p1 wird in der Regel recht sein.

Eine einfachere Möglichkeit, Patches zu erstellen, ist Quilt verwendet, die bessere Arbeit hat viele Patches, wie Einspielen von Patches, erfrischendem Patches und das Zurücksetzen von gepatchten Dateien ursprünglichen Zustand zu verwalten. Quilt ist auf Debian verwendet, um ihre Patches zu verwalten. Siehe Quilt Verwendung für grundlegende Informationen über grundlegende Quilt Verwendung zu erzeugen, anwenden Patches und gepatchte Dateien zurückkehren.







In Verbindung stehende Artikel