Wie verwalte ich lokale Patches für den FreeBSD-Portbaum?

2141

Wie werden lokale Patches im FreeBSD-Portbaum bevorzugt? Als Beispiel schauen Sie sich an textproc/urlview. Dieser Port installiert das url_handler.shSkript. Dieses Skript definiert Anwendungen, die für verschiedene URL-Typen verwendet werden. Die Standardanwendungen passen nicht zu meinem System.

Was soll ich tun? Ich habe in der Vergangenheit zwei ziemlich unbefriedigende Wege gewählt:

  1. Erstellen und installieren Sie den Vanilla-Port und bearbeiten Sie `/ usr / local / bin / url_handler.sh 'direkt. Dadurch wird das Löschen des installierten Ports beeinträchtigt, da sich die Prüfsumme geändert hat. Dies kann vermieden werden, indem man die Dateien in `/ var / db / pkg` direkt anlegt, aber das ist so hackig wie es nur geht.
  2. Erstellen Sie eine Patch-Datei in `/ usr / ports / textproc / urlview / files`, die das Skript in der` patch`-Phase entsprechend patcht. Dies schlägt jedoch fehl, wenn Sie `portsnap` verwenden, da das Verzeichnis vor dem Aktualisieren der Ports-Struktur gelöscht wird.

Wie geht ihr Jungs mit solchen Dingen um?

5
Vielleicht lohnt es sich, nach einem Serverfehler zu fragen. Ich bin auch interessiert, nachdem ich einige der Pakete selbst aktualisiert habe. Andrew Cox vor 15 Jahren 0
Überprüfen Sie den Port von AnonCVS, und Sie können Ihrem Port lokale Dateien hinzufügen. arved vor 12 Jahren 0

3 Antworten auf die Frage

2
jyap

Option 2. Ich habe eine Handvoll Patches für bestimmte Ports. Wenn eine neuere Version verfügbar ist, aktualisieren Sie Ihre Ports-Struktur, kopieren Sie sie in die geänderten Patches und führen Sie "make patch" manuell aus, um zu überprüfen, ob die Patches sauber sind. Dann "make", um zu sehen, ob Builds erstellt werden.

2
Dave Hayes

Ich würde Option 2 sagen, aber verwenden Sie ein Skript, um Ihre Patches zu kopieren. Ein Skript hilft dabei, eine Prozedur zu dokumentieren, die wirklich hilfreich ist, wenn Sie ein Jahr zurückgehen und herausfinden möchten, was Sie getan haben.

Obwohl Sie etwas Besonderes schreiben könnten, das eine Verzeichnisstruktur in den Ports-Baum "überlagert", finde ich, dass einfacher einfacher ist:

#/bin/sh PORTSTREE="/usr/ports" MYPATCHDIR="/wherever/you/put/these"  # my textproc/urlview patch cp $/myurlview.patch $/textproc/urlview/files 

Jetzt können Sie alle Ihre Änderungen in einer Datei auflisten und alle Ihre Patches in einem Verzeichnis speichern. Führen Sie das Skript aus, nachdem Sie portsnap oder (nowdays) eine neue Ports-Struktur erstellt haben.

2
Peter

Ich habe angefangen, das Git-Repo ( https://github.com/freebsd/freebsd-ports.git ) zu verwenden und habe dann einen lokalen Zweig mit den erforderlichen Änderungen. Ich verwende dies auch, wenn ich eigene Ports erstelle, die nicht in der Portstruktur verfügbar sind.