Poudriere ist ein unter der BSD-Lizenz stehendes Werkzeug zum Erstellen und Testen von FreeBSD-Paketen. Dieses Programm nutzt FreeBSD Jails, um die Pakete in einer isolierten Umgebung zu bauen. Diese Jails können verwendet werden, um Pakete für andere Versionen von FreeBSD zu bauen, oder um auf einem amd64-System Pakete für i386 zu bauen. Sobald die Pakete gebaut sind, haben sie das gleiche Format wie auf den offiziellen Spiegeln. Die Pakete können dann mit pkg(8) oder anderen Paketverwaltungswerkzeugen benutzt werden.
Poudriere wird über das Paket
oder den Port ports-mgmt/poudriere
installiert. Die Installation beinhaltet eine
Beispielkonfiguration in
/usr/local/etc/poudriere.conf.sample
.
Kopieren Sie diese Datei nach
/usr/local/etc/poudriere.conf
. Bearbeiten
Sie dann die kopierte Datei, um die Konfiguration
anzupassen.
Obwohl ZFS für
poudriere nicht zwingend erforderlich
ist, so hat die Nutzung doch einige Vorteile. Wird
ZFS eingesetzt, muss in
/usr/local/etc/poudriere.conf
die Variable
ZPOOL
definiert, und die Variable
FREEBSD_HOST
auf einen nahe gelegenen
Spiegel gesetzt werden. Die Definition von
CCACHE_DIR
erlaubt die Verwendung von
devel/ccache, um die Bauzeit für häufig
kompilierten Code verkürzen. Es kann vorteilhaft sein, die
poudriere-Datasets in einem separaten
Verzeichnis auf /poudriere
einzuhängen.
Die Werte der anderen Konfigurationsvariablen sind in der Regel
angemessen und brauchen nicht geändert werden.
Die Anzahl der Kerne im Prozessor wird verwendet um zu bestimmen, wie viele Bauprozesse parallel ausgeführt werden sollen. Stellen Sie ausreichend virtuellen Speicher bereit, entweder in Form von RAM oder als Swap-Speicher. Ist der virtuelle Speicher aufgebraucht, bricht der Bauprozess ab und die Jails stürzen ab, was zu seltsamen Fehlermeldungen führt.
Nach der Konfiguration muss
poudriere initialisiert werden,
damit es eine Jail mit der benötigten Ports-Sammlung startet.
Geben Sie mit -j
den Namen der Jail und mit
-v
die gewünschte FreeBSD-Version an. Auf
FreeBSD/amd64-Systemen kann die Architektur mit dem
Schalter -a
und i386
oder
amd64
gesetzt werden. Der voreingestellte
Wert für die Architektur können Sie sich mit
uname
anzeigen lassen.
#
poudriere jail -c -j
====>> Creating 10amd64 fs... done ====>> Fetching base.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/base.txz 100% of 59 MB 1470 kBps 00m42s ====>> Extracting base.txz... done ====>> Fetching src.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/src.txz 100% of 107 MB 1476 kBps 01m14s ====>> Extracting src.txz... done ====>> Fetching games.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/games.txz 100% of 865 kB 734 kBps 00m01s ====>> Extracting games.txz... done ====>> Fetching lib32.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/lib32.txz 100% of 14 MB 1316 kBps 00m12s ====>> Extracting lib32.txz... done ====>> Cleaning up... done ====>> Jail 10amd64 10.0-RELEASE amd64 is ready to be used10amd64
-v10.0-RELEASE
#
poudriere ports -c -p
====>> Creating local fs... done ====>> Extracting portstree "local"... Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found. Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Tue Feb 11 01:07:15 CET 2014: 94a3431f0ce567f6452ffde4fd3d7d3c6e1da143efec76100% of 69 MB 1246 kBps 00m57s Extracting snapshot... done. Verifying snapshot integrity... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue Feb 11 01:07:15 CET 2014 to Tue Feb 11 16:05:20 CET 2014. Fetching 4 metadata patches... done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 48 patches. (48/48) 100.00% done. done. Applying patches... done. Fetching 1 new ports or files... done. /poudriere/ports/tester/CHANGES /poudriere/ports/tester/COPYRIGHT [...] Building new INDEX files... done.local
poudriere kann auf einem einzelnen Rechner Ports mit mehreren Konfigurationen bauen, in mehreren Jails und aus unterschiedlichen Ports-Sammlungen. Spezifische Konfigurationen für diese Kombinationen werden Sets genannt. Lesen Sie den Abschnitt CUSTOMIZATION in poudriere(8) für weitere Einzelheiten nach der Installation von port-mgmt/poudriere oder ports-mgmt/poudriere-devel.
Die hier gezeigte Konfiguration verwendet eine einzelne
Jail-, Port- und Set-spezifische
make.conf
in
/usr/local/etc/poudriere.d
. Der
verwendete Dateiname in diesem Beispiel wird aus einer
Kombination von Jailnamen, Portnamen und Setnamen zusammen
gesetzt:
.
Die 10amd64-local-workstation
-make.confmake.conf
des Systems und diese neue
Datei werden verwendet, um die make.conf
für die Jail zu erzeugen.
Die zu bauenden Pakete werden in
eingetragen:10amd64-local-workstation
-pkglist
editors/emacs devel/git ports-mgmt/pkg ...
Die Optionen und Abhängigkeiten für die Ports werden wie folgt konfiguriert:
#
poudriere options -j
10amd64
-plocal
-zworkstation
-f10amd64-local-workstation-pkglist
Schließlich werden die Pakete gebaut und ein Paket-Repository erstellt:
#
poudriere bulk -j
10amd64
-plocal
-zworkstation
-f10amd64-local-workstation-pkglist
Ctrl+t
zeigt den aktuellen Status des Baus an.
Poudriere speichert zudem Dateien
in /poudriere/logs/bulk/jailname
. Diese
Dateien kann ein Webserver nutzen, um Informationen über den
Bau anzuzeigen.
Die Pakete stehen jetzt im poudriere Repository für die Installation zur Verfügung.
Weitere Informationen zu poudriere finden Sie in poudriere(8) und unter https://github.com/freebsd/poudriere/wiki.
Obwohl es möglich ist ein eigenes Repository zusammen mit
dem offiziellen Repository zu nutzen, ist es manchmal
sinnvoll das offizielle Repository zu deaktivieren. Dazu
wird eine Konfigurationsdatei erstellt, welche die offizielle
Konfigurationsdatei überschreibt. Erzeugen Sie dazu
/usr/local/etc/pkg/repos/FreeBSD.conf
mit dem folgenden Inhalt:
FreeBSD: { enabled: no }
Am einfachsten ist es, das poudriere Repository über
HTTP zur Verfügung zu stellen. Setzen Sie
einen Webserver auf, der die Dateien des Paketverzeichnisses
ausliefert, zum Beispiel
/usr/local/poudriere/data/packages/
.
10amd64
10amd64
bezeichnet dabei den Namen des
Baus.
Wenn die URL des Paket Repositories
http://pkg.example.com/10amd64
ist, dann
sollte die Konfiguration des Repositories in
/usr/local/etc/pkg/repos/custom.conf
wie folgt aussehen:
custom: {
url: "http://pkg.example.com/10amd64
",
enabled: yes,
}
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.