Spätestens seit FreeBSD 9.1 steht mit pkg ein neues und deutlich verbessertes Paketmanagement-Werkzeug zur Verfügung. Da es jedoch leider noch immer kein offizielles Repository dafür gibt kann man sich relativ einfach ein eigenes erzeugen. Hierzu wird das Werkzeug ports-mgmt/poudriere verwendet.
Poudriere ist ursprünglich ein Werkzeug um die Erzeugung von Pakete für FreeBSD zu testen. Hier wird es jedoch dafür verwendet um ein eigenes Paketrepository zu erzeugen. Poudriere nutzt dabei die Möglichkeiten die ein modernes FreeBSD ihm bietet (z.B. ZFS, Jails,..). Seit Version 3.0 ist es möglich poudriere auch ohne ZFS zu verwenden. Die Konfiguration ohne ZFS wird im weiteren betrachtet (um ZFS zu verwenden sind lediglich wenige selbsterklärende Änderungen an der Konfiguration notwendig).
Da poudriere selbst jails erzeugt und verwaltet ist die Installation und der Betrieb von poudriere selbst innerhalb einer Jail nicht ohne weiteres möglich. (Wer es doch versuchen möchte kann der Anleitung auf dieser fremden Seite folgen: poudriere in a jail - Keine Garantie für den Inhalt der Seite!).
Zunächst muss ports-mgmt/poudriere installiert werden.
Poudriere liefert direkt eine Konfigurationsvorlage mit welche kopiert werden muss.
# cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
Anschließend kann die Datei /usr/local/etc/poudriere.conf bearbeitet werden. Im Folgenden wird pourdiere für ein System ohne ZFS konfiguriert. Seine Daten legt poudriere unter /poudriere ab (was z.B. eine eigene Partition sein kann um das System davor zu schützen, dass / voll läuft).
NO_ZFS=yes FREEBSD_HOST=ftp://ftp.freebsd.org RESOLV_CONF=/etc/resolv.conf BASEFS=/poudriere USE_PORTLINT=no USE_TMPFS=yes DISTFILES_CACHE=/usr/ports/distfiles
Poudriere benötigt einen Port-Tree um die Pakete zu bauen. Es verwaltet dabei seinen eigenen Port-Tree (um genau zu sein kann es verschiedene verwalten). Dieser wird wie folgt geladen (und befindet sich dann unter /poudriere/ports/default).
# poudriere ports -c
Jail erstellen
# poudriere jail -c -j 92amd64 -v 9.2-RELEASE -a amd64
Pakete für das neue PKG bauen
echo "WITH_PKGNG=yes" > /usr/local/etc/poudriere.d/92amd64-make.conf
Paketliste anlegen unter /usr/local/etc/poudriere.list
editors/vim-lite
Bau anstossen
# poudriere bulk -f /usr/local/etc/poudriere.list -j 92amd64
Der fertige Paketbaum liegt dann unter /poudriere/data/packages/92amd64-default und kann über einen Webserver als Repository freigegeben werden.
Mit dem fertig eingerichteten Poudriere kann nun beliebig weiter gearbeitet werden. Es folgen nun ein paar typische Beispiele.
Um neue Pakete hinzuzufügen oder nicht mehr benötigte nicht erneut bauen zu lassen wird die Datei /usr/local/etc/poudriere.list entsprechend angepasst (es ist auch möglich Zeilen durch vorranstellen eines # auszukommentieren, dann werden diese nicht ausgewertet). Anschließend muss der Paketbaum neu gebaut werden.
Um aktuelle Pakete zu bauen muss logischerweise zunächst der Ports-Tree aktuallisiert werden. Dies geschieht mit folgendem Aufruf:
# poudriere ports -u
Anschließend kann der Paketbaum neu gebaut werden.
Um den Paketbaum einer Jail neu zu bauen wird einfach wieder der entsprechende Befehl abgesetzt. Die Jail mit dem Namen '92amd64' wird z.B. mit folgendem Aufruf neu gebaut:
# poudriere bulk -f /usr/local/etc/poudriere.list -j 92amd64