snapshot
.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 :
- FREEBSD_HOST, j'utilise le protocole
http
, car mon pare-feu bloque les connexions vers les serveurs FTP - USE_PORTLINT, cette option n'est pas obligatoire, c'est plus pour les développeurs
- SVN_HOST, la géolocalisation d'un miroir SVN se fait désormais tout seul
- PKG_REPO_SIGNING_KEY la clé privée
- NO_RESTRICTED en plaçant la valeur à no, les paquets qui sont sous une licence propriétaire seront conservés
Création des jails
Nous avons besoin au minimum de deux jails :
- Une contenant l'arbre des ports
- Une contenant le système sur lequel on souhaite construire les ports
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>