====== Allgemein ======
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.
====== Über poudriere ======
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: [[https://fossil.etoilebsd.net/poudriere/doc/trunk/doc/poudriere_in_jail.wiki|poudriere in a jail]] - Keine Garantie für den Inhalt der Seite!).
====== poudriere installieren ======
Zunächst muss //ports-mgmt/poudriere// installiert werden.
====== poudriere konfigurieren ======
===== Konfigurationsdatei anlegen =====
Poudriere liefert direkt eine Konfigurationsvorlage mit welche kopiert werden muss.
# cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
===== Konfiguration anpassen =====
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
====== Port-Tree installieren ======
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.
====== Weitere Arbeit mit Poudriere ======
Mit dem fertig eingerichteten Poudriere kann nun beliebig weiter gearbeitet werden. Es folgen nun ein paar typische Beispiele.
===== Pakete hinzufügen oder entfernen =====
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 [[Eigenes PKG-Repository#Paketbaum neu bauen | Paketbaum neu gebaut werden]].
===== Ports-Tree aktualisieren =====
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 [[Eigenes PKG-Repository#Paketbaum neu bauen | Paketbaum neu gebaut werden]].
===== Paketbaum neu bauen =====
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