====== 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.** 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 //jail//s : * 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'' ((Il utilise un ''snapshot''.)). 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''. **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 ==== 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 [[https://fr.wikipedia.org/wiki/AMD64|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 **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.