GitPackagingSbuildCommon » Historique » Version 16
« Précédent -
Version 16/21
(diff) -
Suivant » -
Version actuelle
Daniel Dehennin, 10/05/2012 17:29
Correction des droits sur le répertoires dédié aux builds
- Mise en place d’un environnement de compilation personnel
- Installation des paquets nécessaires
- Création d’un utilisateur pour le build
- Ajoute de l’utilisateur au groupe sbuild
- Création d’une paire de clef GPG
- Mutualisation du cache apt
- Récupération des clefs publiques des dépôts
- Préparation de l’environnement
- Création d’un volume logique dédié aux builds
- Création des environnements de build
Mise en place d’un environnement de compilation personnel¶
Sur une machine dédiée au build, nous avons besoin :
- D’un utilisateur dédié au build ;
- D’un groupe de volume logique d’une taille suffisante pour les
chroot ;
- De suffisamment d’espace libre sur le groupe de volume pour les
snapshots.
Installation des paquets nécessaires¶
Les deux paquets nécessaire à la création et la gestion des
environnements sont les suivants :
- sbuild: l’utilitaire de gestion des chroot
- debootstrap: l’utilitaire d’installation
system@build:~$ sudo apt-get install sbuild debootstrap
Création d’un utilisateur pour le build¶
Ce dernier recevra les logs dans son répertoire personnel.
Il est cependant possible d’utiliser votre compte utilisateur, mais
sera indispensable lors de la mise en place d’un système de build
automatique.
system@build:~$ sudo adduser buildd
Ajoute de l’utilisateur au groupe sbuild¶
L’accès aux outils de gestion de schroot est restreint aux membres du
groupe sbuild.
Exécuter la commande suivante et copier le fichier comme indiqué :
system@build:~$ sudo sbuild-adduser buildd
Création d’une paire de clef GPG¶
L’outil sbuild créé des pseudos paquets pour la gestion des
Build-Depends lors de la construction des paquets.
Cette paire de clef est locale à la machine
(/var/lib/sbuild/apt-keys
) et spécifique à la procédure de build, il
n’y a nullement lieu de la publier.
buildd@build:~$ sbuild-update --keygen
Afin de générer de l’entropie, j’exécute dans un autre terminal la
commande suivante :
buildd@build:~$ find / -type f -exec sha512sum {} \; > /dev/null 2>&1
Si vous êtes en SSH sur une machine (virtuelle ou physique), la frappe
de touche au clavier doit consommer autant d’entropie qu’elle n’en
fournie.
Mutualisation du cache apt¶
system@build:~$ sudo /bin/sh -c "echo /var/cache/apt/archives /var/cache/apt/archives none rw,bind 0 0 >>/etc/schroot/sbuild/fstab"
Récupération des clefs publiques des dépôts¶
La machine de build étant une debian, il faut ajouter les clefs GPG publique du projet ubuntu et de EOLE.
system@build:~$ wget http://eoleng.ac-dijon.fr/eoleng/eole-repository.key system@build:~$ wget http://fr.archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg system@build:~$ sudo apt-key add eole-repository.key system@build:~$ sudo apt-key add ubuntu-archive-keyring.gpg
Préparation de l’environnement¶
Afin d’avoir des commandes réutilisables facilement, nous partirons du principe que :
- la variable d’environnement
${YOUR_VG}
contient le nom de votre groupe de volume ;
- La variable d’environnement
${dist}
contient le nom de la distribution ;
- La variable d’environnement
${arch}
contient le nom de l’architecture ;
system@buildd:~$ export YOUR_VG=build dist=lucid arch=amd64
En partant d'une installation utilisant partman-auto
, le groupe de volume est déjà complet. Si la recette est bien faite, un volume logique a été créé avec l'option method{ keep }
. Ce volume (nommé par défaut keep_1) peut-être supprimé et l’espace libéré aini peut-être réutilisé.
system@build:~$ sudo lvchange -a n /dev/${YOUR_VG}/keep_1 system@build:~$ sudo lvremove /dev/${YOUR_VG}/keep_1
Création d’un volume logique dédié aux builds¶
Ce volume sera monté dans chaque snapshot lors d’un build afin de ne
pas surcharger les snapshots de construction.
system@build:~$ sudo lvcreate -L20g -n var+lib+sbuild+build ${YOUR_VG} system@build:~$ sudo mkfs.ext4 -L /var/lib/sbuild/build -m0 /dev/${YOUR_VG}/var+lib+sbuild+build system@build:~$ sudo /bin/sh -c "echo /dev/${YOUR_VG}/var+lib+sbuild+build /var/lib/sbuild/build ext4 rw,noatime 0 2 >> /etc/fstab" system@build:~$ sudo mount /var/lib/sbuild/build system@build:~$ sudo chown sbuild:sbuild /var/lib/sbuild/build system@build:~$ sudo chmod 2770 /var/lib/sbuild/build
Création des environnements de build¶
La gestion des environnements de build est faite par schroot et peut utiliser plusieurs systèmes afin de partager une image de base et ainsi gagner du temps lors des compilation :
- Les volumes logiques ;
- Le système de fichier
btrfs
.