pkgng-Pakete mit poudriere bauen
Mit Hilfe von poudriere lassen sich ähnlich wie bei Tinderbox Ports testen und Pakete erstellen. Im Gegensatz zu Tinderbox benötigt poudriere keine zusätzliche Software wie eine Datenbank usw. sondern verwendet nur Funktionen des Basissystems (z.B. ZFS und Jails). Im FreeBSD-Portsbaum findet man poudriere unter ports-mgmt/poudriere:
# cd /usr/ports/ports-mgmt/poudriere && make install clean
Für poudriere benötigt man einen zpool welcher in folgendem Beispiel den Namen tank hat:
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 19.9G 1.23G 18.6G 6% 1.00x ONLINE -
Nun kan die poudriere-Konfiguration angelegt werden. Dabei muss der Name des zpool's den man verwenden möchte und ein FTP-Server angegeben werden. Weiter wird noch der Ort angegeben wo sich die resolv.conf der Jails befindet:
# vi /usr/local/etc/poudriere.conf ZPOOL=tank FTPHOST=ftp.ch.freebsd.org RESOLV_CONF="/usr/local/etc/poudriere.d/resolv.conf"
Anschliessend erstellt man die entsprechende resolv.conf:
# mkdir /usr/local/etc/poudriere.d/ # vi /usr/local/etc/poudriere.d/resolv.conf
Als nächstes muss eine Jail erstellt werden. Im folgenden Beispiel wird eine FreeBSD 8.2 Jail für amd64 erstellt welche den Namen 82amd64 erhält. Die entsprechenden Daten werden danach vom FTP-Server heruntergeladen:
# poudriere jail -c -v 8.2-RELEASE -a amd64 -j 82amd64
Als nächstes wird der Portsbaum erstellt welcher mit portsnap angelegt wird:
# poudriere ports -c
Standardmässig baut poudriere normale FreeBSD-Pakete. Möchte man Pakete für pkgng erstellen, wird dies in der make.conf für die entsprechende Jail eingetragen:
# echo "WITH_PKGNG=yes" > /usr/local/etc/poudriere.d/82amd64-make.conf
Nun werden alle Ports für die man Pakete bauen möchte in einer Datei eingetragen:
# echo "www/firefox" > ~/pkglist # echo "mail/thunderbird" >> ~/pkglist
Anschliessend werden diese Ports gebaut:
# poudriere bulk -f ~/pkglist -j 82amd64
Die fertigen Pakete werden danach unter /usr/local/poudriere_data/packages und dem entsprechenden Jail-Namen in einer Verzeichnisstruktur angelegt welche mit den offiziellen FTP-Servern übereinstimmt, so dass man diese auf einem Web- oder FTP-Server freigeben kann und diese danach zum Beispiel mit pkg_add oder portmaster verwenden kann. Hat man pkgng-Pakete gebaut wird zugleich noch eine Repository-Datei erstellt, so dass diese die Verzeichnisstruktur auch als pkgng-Repository verwendet werden kann:
# cd /usr/local/poudriere_data/packages/82amd64-default # ls -l repo.txz -rw-r--r-- 1 root wheel 1580 May 5 13:28 repo.txz
Poudriere enthält noch viele weitere Funktionalitäten und Möglichkeiten welche in der Manpage poudriere(8) beschrieben sind.