Portsnap
Portsnap ist ein nützliches Werkzeug für die FreeBSD Softwarepflege. Es dient der speicherplatz- und zeiteffizienten Synchronisation des Portsbaums mit dem offiziellen Portsbaum. Auf speziellen Servern werden sogenannte Deltas bereitgestellt und vom portsnap-Client heruntergeladen. Diese Deltas werden danach zur Aktualisierung des lokalen Portsbaums verwendet. Ein weiterer Vorteil ist, dass die Index-Dateien (/usr/ports/INDEX*
) ebenfalls mitaktualisiert werden und nicht selbst erzeugt oder heruntergeladen werden müssen.
Im Gegensatz zu CVS und davon abgeleiteten Methoden kann nicht ein bestimmter Zustand ausgewählt werden, man erhält stets einen Snapshot des aktuellen Portsbaums.
Portsnap ist seit FreeBSD Version 6.1 Bestandteil des Basissystems, für ältere Releases kann es aus dem
Port sysutils/portsnap
(cvs) nachistalliert werden. Danach sollte noch ein Blick auf (/usr/local)/etc/portsnap.conf
geworfen werden, darin kann man beispielsweise bestimmte Teile des Portsbaums ausklammern, die garantiert nicht benötigt werden, wie beispielsweise die Sprach-Teilbäume für nicht benötigte Sprachen.
Erstmalige Verwendung
Zunächst müssen sämtliche verfügbaren Deltas heruntergeladen und ein evtl. vorhandener anderweitig beschaffter Portsbaum weggeräumt werden. Anschließend kann man mit portsnap
den neuen Portsbaum extrahieren.
portsnap fetch mv -f /usr/ports /usr/ports.old portsnap extract
Danach kann der nicht mehr benötigte, alte Portsbaum unter /usr/ports.old
gelöscht werden. Es ist unter Umständen sinnvoll die zwischenzeitlich angesammelten Distfiles und Packages aus dem alten Portsbaum in den neuen zu verschieben:
mv -f /usr/ports.old/{distfiles|packages} /usr/ports rm -rf /usr/ports.old
Um diese Kommandos ausführen zu können braucht man Schreibrechte auf den Portsbaum und das Spool-Verzeichnis für die heruntergeladenen Deltas.
Spätere Aktualisierung
portsnap fetch portsnap update