BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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.

 Permalink

Comments

No new comments allowed (anymore) on this post.