ports:poudriere

Générer des paquets

Cet outil va vous permettre de générer des paquets pour vous et pour les autres, à destination de pkg(8).

Installez le port ports-mgmt/poudriere.

Ensuite, configurez /usr/local/etc/poudriere.conf:

--- poudriere.conf.sample       2020-03-27 01:31:05.000000000 +0100
+++ poudriere.conf      2020-04-02 14:57:44.453739000 +0200
@@ -9,14 +9,14 @@
 # You need at least 7GB of free space in this pool to have a working
 # poudriere.
 #
-#ZPOOL=zroot
+ZPOOL=zroot
 
 ### NO ZFS
 # To not use ZFS, define NO_ZFS=yes
 #NO_ZFS=yes
 
 # root of the poudriere zfs filesystem, by default /poudriere
-# ZROOTFS=/poudriere
+ZROOTFS=/poudriere
 
 # the host where to download sets for the jails setup
 # You can specify here a host or an IP
@@ -27,7 +27,7 @@
 # Also note that every protocols supported by fetch(1) are supported here, even
 # file:///
 # Suggested: https://download.FreeBSD.org
-FREEBSD_HOST=_PROTO_://_CHANGE_THIS_
+FREEBSD_HOST=ftp://ftp5.fr.FreeBSD.org
 
 # By default the jails have no /etc/resolv.conf, you will need to set
 # RESOLV_CONF to a file on your hosts system that will be copied has
@@ -204,7 +204,7 @@
 # URL where your POUDRIERE_DATA/logs are hosted
 # This will be used for giving URL hints to the HTML output when
 # scheduling and starting builds
-#URL_BASE=http://yourdomain.com/poudriere/
+URL_BASE=http://popeye.lapinbilly.eu/poudriere/
 
 # This defines the max time (in seconds) that a command may run for a build
  1. ZPOOL, le nombre de votre pool ZFS ;
  2. ZROOTFS, le dataset qui sera créé ;
  3. FREEBSD_HOST, détermine le chemin de téléchargement d'une base freebsd ;
  4. URL_BASE, qui vous êtes.

Créer un répertoire pour recevoir les sources, celui définit dans la configuration, DISTFILES_CACHE:

$ mkdir -p /usr/ports/distfiles

Une poudrière est une jail qui va compiler et générer les paquets destiné à une machine FreeBSD. Les machines auxquelles vous destinez les paquets déterminent la release de la jail. Ces paquets sont compilés suivant un arbre des ports et des options déterminés.

Donner une liste de paquets à compiler dans un fichier, qui sera utilisé avec l'option -f de poudriere. Une entrée de la liste se compose de la catégorie puis du nom du port à générer, sous la forme <cat>/<nom>. Par exemple:

david@machine:~ % cat /usr/local/etc/poudriere.d/liste_des_ports
databases/mysql56-server
databases/postgresql11-server
databases/postgresql11-client
databases/redis
databases/pecl-redis
devel/pecl-APCu
editors/vim-console
net/boinc-client
ports-mgmt/pkg
security/sudo
www/owncloud

Déterminer des options à appliquer par défaut à ces paquets en créant un fichier de la forme <jail>_<arbre des ports>-make.conf, à placer dans usr/local/etc/poudriere.d/

david@machine:~ % cat /usr/local/etc/poudriere.d/own12-default-make.conf
CPUTYPE?=k8-sse3
OPTIONS_UNSET+= DOC DOCS NLS X11 EXAMPLES EXAMPLE XCB WAYLAND DEBUG FONTCONFIG TEST TESTS
OPTIONS_SET=OPTIMIZED_FLAGS OPTIMIZED_CFLAGS OPENMP FREEBSD
DEFAULT_VERSIONS+=php=7.4
DEFAULT_VERSIONS+=ssl=libressl
  • OPTIONS_UNSET et OPTIONS_SET définissent les options à activer/désactiver par défaut.
  • DEFAULT_VERSION va déterminer les flavors à appliquer à votre liste. Ici, c'est la version 7.4 de php qui prime. La deuxième ligne précise le port qui va répondre aux dépendances USES=ssl, ici libressl.
Pour que les options par défait soient prises en compte, il faut lancer au moins une fois un poudriere options.

Créez une jail qui va compiler vos ports. Seuls les clients d'une release identique seront acceptés.

$ poudriere jail -j fbsd12 -c -v 12.2-RELEASE

ou, pour compiler une version depuis les sources, si vous voulez générez des paquets uniquement pour -Stable ou -Current:

poudriere jail -c -j stable13 -m git -v stable/13
Depuis fin 2020, les sources sont disponibles sous git.

Créez au moins un arbre de ports:

$ poudriere ports -c
Depuis Avril 2021, les dépôts sont disponibles sous git uniquement. A ce jour portsnap ne sait pas le gérer. Précisez le en attendant que ce soit l'option par défaut.
$ poudriere ports -c -U https://git.freebsd.org/ports.git -m git -B main

Sans préciser de nom à ce dernier, il s'agira de default.

Définissez vos options, au besoin:

$ poudriere options -j fbsd12 -C www/nginx
$ poudriere options -j fbsd12 -C -f liste_des_ports

Créer un paquet:

$ poudriere bulk -j fbsd12  www/nginx

voire, tous:

$ poudriere bulk -j fbsd12  -f liste_des_ports

Vous aurez besoin d'un serveur web, comme nginx. Configurez le :

/usr/local/etc/nginx/nginx.conf
server {
                listen 80 ; 
                listen [::]:80 ;
                server_name  popeye.lapinbilly.eu ;
 
                location / {
                        root /usr/local/share/poudriere/html;
                        index  index.html index.htm;
                }
 
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                        root   /usr/local/www/nginx-dist;
                }
 
                location /data {
                        alias /usr/local/poudriere/data/logs/bulk;
                        autoindex on;
                }
                location /packages {
                        root /usr/local/poudriere/data;
                        autoindex on;
                }
        }

Précisez un dépôt pour pkg(8):

/usr/local/etc/pkg/repo.conf
lapinbilly: {
    url: "http://popeye.lapinbilly.eu/packages/fbsd12-default/",
    mirror_type: "http",
    enabled: yes,
    priority:99
}

Évitez de multiplier les dépôts, c'est une source d'emmerdes.Désactivez par exemple ceux de FreeBSD:

/usr/local/etc/pkg/repo.conf
FreeBSD: {
    enabled: no,
    priority:0
}

Connectez vous ensuite sur vos dépôts.


  • ports/poudriere.txt
  • Dernière modification: 2021/04/08 18:58
  • de david