Auf älteren FreeBSD-Systemen ist Portsnap nicht automatisch enthalten, aber es kann von sysutils/portsnap port mit folgendem Befehl installiert werden:
# pkg_add -r portsnap
Portsnap holt und aktualisiert zuerst komprimiert Snapshots des FreeBSD-Ports-Baums, die standardmäßig in /var/db/portsnap/ gespeichert sind (in /usr/local/portsnap/, wenn Portsnap von der FreeBSD Ports Collection installiert wird), und extrahiert und aktualisiert dann nur die unkomprimierten Live-Ports-Baum unter /usr/ports.
Das Verhalten und der Betrieb von Portsnap wird durch die Konfigurationsdatei portsnap.conf gesteuert, die sich in /etc befindet (in /usr/local/etc/, wenn Portsnap aus der FreeBSD Ports Collection installiert wird, und die Konfigurationsdatei wird stattdessen nicht automatisch generiert, wenn sie neu installiert wird finden Sie portsnap.conf.sample, kopieren Sie es einfach als portsnap.conf). Im Allgemeinen erledigt die Standardkonfigurationsdatei ihre Aufgaben.
Auf der Befehlszeile werden die folgenden Optionen unterstützt, obwohl sie meistens nicht verwendet werden müssen, einige können in der Konfigurationsdatei selbst konfiguriert werden:
-d Arbeitsverzeichnis :Arbeitsdateien (z. B. heruntergeladene Updates) in Arbeitsverzeichnis speichern. (Standard:/var/db/portsnap, oder wie in der Konfigurationsdatei angegeben)
-f conffile :Liest die Konfiguration von from conffile. (Standard:/etc/portsnap.conf)
-I :Aktualisiere für den Update-Befehl die INDEX-Dateien, aber nicht den Rest des Ports-Baums.
-k KEY :Erwarte einen öffentlichen Schlüssel mit gegebenem SHA256-Hash. (Standard:Wert aus Konfigurationsdatei lesen)
-p portsdir :Wenn Sie einen unkomprimierten Snapshot extrahieren oder aktualisieren, bearbeiten Sie das Verzeichnis portsdir. (Standard:/usr/ports/, oder wie in der Konfigurationsdatei angegeben.)
-s server :Dateien vom angegebenen Server oder Serverpool abrufen. (Standard:portsnap.FreeBSD.org , oder wie in der Konfigurationsdatei angegeben.)
path :Nur für den Extract-Befehl, nur auf Teile des Ports-Baums wirken, die mit path beginnen. (Beispiel:portsnap sysutils/port würde sysutils/portsman, sysutils/portsnap, sysutils/portupgrade usw. extrahieren)
Die Zusammenfassung für die Portsnap-Befehlszeile lautet:
portsnap [-I] [-d Arbeitsverzeichnis] [-f conffile] [-k KEY] [-p Portverzeichnis] [-s Server] Befehl … [Pfad]
Verwendung von Portsnap
- Erstellen Sie ein leeres Verzeichnis /usr/ports, falls es nicht existiert.
# mkdir /usr/ports
- Holen und laden Sie einen komprimierten Snapshot der Ports-Sammlung in /var/db/portsnap (oder einen anderen in der Konfigurationsdatei angegebenen Speicherort) herunter. Zu diesem Zeitpunkt ist eine Internetverbindung erforderlich) und aktualisieren Sie den vorhandenen Snapshot.
# portsnap fetch
- Wenn Sie Portsnap zum ersten Mal ausführen (selbst wenn ein Ports-Baum bereits erstellt oder gefüllt wurde, lassen Sie Portsnap eine Baseline erstellen, anhand derer Portsnap bestimmen kann, welche Teile des Ports-Baums aktualisiert werden müssen) oder /usr /ports wurde nicht ausgefüllt, entpackt den Snapshot und ersetzt die vorhandenen Dateien und Verzeichnisse und richtet den von Portsnap gepflegten Ports-Baum in /usr/ports ein:
# portsnap extract
Dieser Schritt kann übersprungen werden, wenn Sie nur den Ports-Baum aktualisieren.
- Wenn Sie bereits ein gefülltes /usr/ports haben und nur aktualisieren, führen Sie stattdessen den folgenden Befehl aus:
# portsnap update
Hinweis:Zur Aktualisierung des FreeBSD Ports Tree können Schritt 1 und 3 in einem einzigen Befehl kombiniert werden:portsnap fetch update (keine Unterstützung in älteren Versionen von Portsnap).
Portsnap als Cron-Job ausführen
portsnap fetch kann nicht von einem Cron-Job ausgeführt werden, um die Belastung durch einen plötzlichen Anstieg von Download-Anforderungen an Portsnap-Server zu vermeiden. Stattdessen existiert ein spezieller portsnap-cron-Befehl, der für eine zufällige Dauer von bis zu 3600 Sekunden wartet und schläft, bevor er Updates holt, als ob der fetch-Befehl angegeben wäre.
Um portsnap automatisch mit dem Cron-Job auszuführen, fügen Sie einfach die Zeile in /etc/crontab hinzu (die Zeile stellt die Zeit jeden Tag auf 3 Uhr morgens ein, Sie können Ihr eigenes Timing wählen):
0 3 * * * root /usr/sbin/portsnap cron
Dadurch wird sichergestellt, dass der FreeBSD-Snapshot der Ports-Sammlung immer aktuell ist und schnell nach /usr/ports extrahiert werden kann.
Hinweis:Ausführen von Portsnap-Update von Cron wird nicht empfohlen, da dies zu Problemen führen kann, wenn die Installation oder Aktualisierung eines Ports zum Zeitpunkt der Ausführung des Cron-Jobs erfolgt. Portsnap aktualisiert oder entfernt Dateien, die vom Port-Build verwendet werden. Wenn Sie jedoch portsnap -I update ausführen ein Update der Ports-Index-Dateien ist möglich und kann zusammen mit portversion verwendet werden, um installierte Software zu identifizieren, die veraltet ist.
Um den komprimierten Port-Snapshot und die INDEX-Dateien in /usr/ports/ zu aktualisieren und eine E-Mail zu senden, wenn installierte Ports veraltet sind, verwenden Sie die folgende Zeile in /etc/crontab:
0 3 * * * root portsnap -I cron update && pkg_version -vIL=
Hinweis:Ältere Versionen von portsnap unterstützen nicht das Auflisten mehrerer Befehle (z. B. cron update) im selben Aufruf von portsnap. Wenn die obige Zeile fehlschlägt, versuchen Sie, portsnap -I cron update durch portsnap cron &&portsnap -I update zu ersetzen .