Table des matières

Poudriere

Poudriere est un infrastructure de compilation permettant de construire ses propres paquets pour une ou plusieurs releases. Elle repose sur les jails.

Création d'un certificat SSL (optionnel)

Nous allons signé nos paquets à l'aide de l'utilitaire openssl. Ce n'est pas une obligation mais nos utilisateurs seront sans doute plus rassurés.

Génération de la clé privée

openssl genpkey -algorithm RSA -out /usr/local/etc/ssl/rsa-key.pem -pkeyopt rsa_keygen_bits:4096

Génération de la clé publique

openssl pkey -in /usr/local/etc/ssl/rsa-key.pem -pubout -out /usr/local/etc/ssl/rsa-key.cert

Installation

Rien de plus simple, on installe la version déjà fournie pour notre système.

pkg install poudriere dialog4ports

Configuration

Il faut éditer le fichier /usr/local/etc/poudriere.conf. Ci dessous mes propres réglages, je n'utilise pas de système de fichiers ZFS.

C'est une configuration sans ZFS.

poudriere.conf
NO_ZFS=yes
FREEBSD_HOST=http://ftp.fr.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=${BASEFS}/data
USE_PORTLINT=yes
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
SVN_HOST=svn.FreeBSD.org
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/rsa-key.pem
NOLINUX=yes
NO_RESTRICTED=no

Explication concernant certaines variables :

Création des jails

Nous avons besoin au minimum de deux jails :

Pour les ports

Je préfère utiliser l'utilitaire svn (devel/subversion) au lieu de portsnap 1).

pkg install subversion ca_root_nss
poudriere ports -c -m svn+https -p HEAD

L'arbre des ports est désormais situé dans /usr/local/poudriere/ports/HEAD.

Si l'on ne souhaite pas utiliser Subversion, voici la commande qui faut taper :

poudriere ports -c

Dans ce cas là, la jail s'appelle default. On la retrouvera dans /usr/local/poudriere/ports/default.

<note>Quelques options à connaître

Pour lister toutes les jails relatives aux ports (créées avec l'option ports) :

poudriere ports -l

Pour supprimer une jail en particulier (créée avec l'option ports) :

poudriere ports -d default

</note>

Pour le système de base

poudriere jail -c -j amd64-102 -v 10.2-RELEASE -a amd64

Cela va créer une jail ayant comme nom amd64-102. Si notre système de base est une architecture amd64, on peut éventuellement préciser une autre architecture avec l'option -a.

Par exemple, si je veux contruire des ports pour l'architecture i386.

poudriere jail -c -j i386-93 -v 9.3-RELEASE -a i386

<note>Quelques options à connaître

Pour lister toutes nos jails (créées avec l'option jail) :

poudriere jail -l

Pour supprimer une jail en particulier (créée avec l'option jail) :

poudriere jail -d amd64-102

Dans ce cas là, je supprime la jail intitulée amd64-102.</note>

1)
Il utilise un snapshot.