Projet

Général

Profil

GitPackagingSbuildCommon » Historique » Version 9

Daniel Dehennin, 22/02/2012 15:49
La clef publique GPG qui signe les dépôts est accessible par HTTP

1 1 Daniel Dehennin
{{toc}}
2 1 Daniel Dehennin
3 1 Daniel Dehennin
4 2 Daniel Dehennin
h1. Mise en place d’un environnement de compilation personnel
5 1 Daniel Dehennin
6 2 Daniel Dehennin
Sur une machine dédiée au build, nous avons besoin :
7 1 Daniel Dehennin
8 2 Daniel Dehennin
* D’un utilisateur dédié au build ;
9 1 Daniel Dehennin
10 2 Daniel Dehennin
* D’un groupe de volume logique d’une taille suffisante pour les
11 2 Daniel Dehennin
  chroot ;
12 1 Daniel Dehennin
13 2 Daniel Dehennin
* De suffisamment d’espace libre sur le groupe de volume pour les
14 2 Daniel Dehennin
  snapshots.
15 2 Daniel Dehennin
16 2 Daniel Dehennin
h2. Installation des paquets nécessaires
17 2 Daniel Dehennin
18 2 Daniel Dehennin
Les deux paquets nécessaire à la création et la gestion des
19 2 Daniel Dehennin
environnements sont les suivants :
20 2 Daniel Dehennin
21 2 Daniel Dehennin
* sbuild: l’utilitaire de gestion des chroot
22 2 Daniel Dehennin
* debootstrap: l’utilitaire d’installation
23 2 Daniel Dehennin
24 2 Daniel Dehennin
<pre>
25 4 Daniel Dehennin
system@build:~$ sudo apt-get install sbuild debootstrap
26 2 Daniel Dehennin
</pre>
27 2 Daniel Dehennin
28 2 Daniel Dehennin
h2. Création d’un utilisateur pour le build
29 2 Daniel Dehennin
30 2 Daniel Dehennin
Ce dernier recevra les logs dans son répertoire personnel.
31 2 Daniel Dehennin
32 2 Daniel Dehennin
Il est cependant possible d’utiliser votre compte utilisateur, mais
33 2 Daniel Dehennin
sera indispensable lors de la mise en place d’un système de build
34 2 Daniel Dehennin
automatique.
35 2 Daniel Dehennin
36 2 Daniel Dehennin
<pre>
37 4 Daniel Dehennin
system@build:~$ sudo adduser buildd
38 4 Daniel Dehennin
system@build:~$ sudo adduser buildd sudo
39 2 Daniel Dehennin
</pre>
40 2 Daniel Dehennin
41 2 Daniel Dehennin
h2. Ajoute de l’utilisateur au groupe sbuild
42 2 Daniel Dehennin
43 5 Fabrice Barconnière
L’accès aux outils de gestion de schroot est restreint aux membres du
44 2 Daniel Dehennin
groupe sbuild.
45 2 Daniel Dehennin
46 2 Daniel Dehennin
Exécuter la commande suivante et copier le fichier comme indiqué :
47 2 Daniel Dehennin
48 2 Daniel Dehennin
<pre>
49 4 Daniel Dehennin
system@build:~$ sudo sbuild-adduser buildd
50 2 Daniel Dehennin
</pre>
51 2 Daniel Dehennin
52 2 Daniel Dehennin
h2. Création d’une paire de clef GPG
53 2 Daniel Dehennin
54 2 Daniel Dehennin
L’outil sbuild créé des pseudos paquets pour la gestion des
55 2 Daniel Dehennin
Build-Depends lors de la construction des paquets.
56 2 Daniel Dehennin
57 2 Daniel Dehennin
Cette paire de clef est locale à la machine
58 2 Daniel Dehennin
(@/var/lib/sbuild/apt-keys@) et spécifique à la procédure de build, il
59 2 Daniel Dehennin
n’y a nullement lieu de la publier.
60 2 Daniel Dehennin
61 2 Daniel Dehennin
<pre>
62 4 Daniel Dehennin
buildd@build:~$ sbuild-update --keygen
63 2 Daniel Dehennin
</pre>
64 2 Daniel Dehennin
65 2 Daniel Dehennin
Afin de générer de l’entropie, j’exécute dans un autre terminal la
66 2 Daniel Dehennin
commande suivante :
67 2 Daniel Dehennin
68 2 Daniel Dehennin
<pre>
69 4 Daniel Dehennin
buildd@build:~$ find / -type f -exec sha512sum {} \; > /dev/null 2>&1
70 2 Daniel Dehennin
</pre>
71 2 Daniel Dehennin
72 2 Daniel Dehennin
Si vous êtes en SSH sur une machine (virtuelle ou physique), la frappe
73 2 Daniel Dehennin
de touche au clavier doit consommer autant d’entropie qu’elle n’en
74 2 Daniel Dehennin
fournie.
75 2 Daniel Dehennin
76 2 Daniel Dehennin
h2. Mutualisation du cache apt
77 2 Daniel Dehennin
78 2 Daniel Dehennin
<pre>
79 4 Daniel Dehennin
buildd@build:~$ sudo /bin/sh -c "echo /var/cache/apt/archives /var/cache/apt/archives none rw,bind 0 0 >>/etc/schroot/sbuild/fstab"
80 2 Daniel Dehennin
</pre>
81 2 Daniel Dehennin
82 2 Daniel Dehennin
h2. Récupération des clefs publiques des dépôts
83 2 Daniel Dehennin
84 2 Daniel Dehennin
La machine de build étant une debian, il faut utiliser un keyring
85 2 Daniel Dehennin
comprenant les clefs ubuntu et les clefs EOLE.
86 2 Daniel Dehennin
87 2 Daniel Dehennin
<pre>
88 9 Daniel Dehennin
buildd@build:~$ wget http://eoleng.ac-dijon.fr/eoleng/eole-repository.key
89 9 Daniel Dehennin
buildd@build:~$ sudo apt-key add eole-repository.key
90 2 Daniel Dehennin
</pre>
91 2 Daniel Dehennin
92 2 Daniel Dehennin
h2. Création d’un volume logique dédié aux builds
93 2 Daniel Dehennin
94 2 Daniel Dehennin
Ce volume sera monté dans chaque snapshot lors d’un build afin de ne
95 2 Daniel Dehennin
pas surcharger les snapshots de construction.
96 2 Daniel Dehennin
97 2 Daniel Dehennin
<pre>
98 4 Daniel Dehennin
buildd@build:~$ sudo lvcreate -L20g -n var+lib+sbuild+build ${YOUR_VG}
99 4 Daniel Dehennin
buildd@build:~$ sudo mkfs.ext4 -L /var/lib/sbuild/build -m0 /dev/${YOUR_VG}/var+lib+sbuild+build
100 4 Daniel Dehennin
buildd@build:~$ sudo /bin/sh -c "echo /dev/${YOUR_VG}/var+lib+sbuild+build /var/lib/sbuild/build ext4 rw,noatime 0 2 >> /etc/fstab"
101 4 Daniel Dehennin
buildd@build:~$ sudo mount /var/lib/sbuild/build
102 2 Daniel Dehennin
</pre>
103 2 Daniel Dehennin
104 2 Daniel Dehennin
h2. Création des environnements de build
105 2 Daniel Dehennin
106 2 Daniel Dehennin
La gestion des environnements de build est faite par schroot et peut
107 2 Daniel Dehennin
utiliser plusieurs systèmes afin de partager une image de base et ainsi
108 2 Daniel Dehennin
gagner du temps lors des compilation :
109 2 Daniel Dehennin
110 2 Daniel Dehennin
* Les volumes logiques ;
111 2 Daniel Dehennin
* Le système de fichier @btrfs@.
112 2 Daniel Dehennin
113 2 Daniel Dehennin
Nous partirons du principe que :
114 2 Daniel Dehennin
115 2 Daniel Dehennin
* la variable d’environnement @${YOUR_VG}@ contient le nom de votre
116 2 Daniel Dehennin
  groupe de volume ;
117 2 Daniel Dehennin
118 2 Daniel Dehennin
* La variable d’environnement @${dist}@ contient le nom de la
119 2 Daniel Dehennin
  distribution ;
120 2 Daniel Dehennin
121 2 Daniel Dehennin
* La variable d’environnement @${arch}@ contient le nom de
122 2 Daniel Dehennin
  l’architecture ;
123 2 Daniel Dehennin
124 2 Daniel Dehennin
<pre>
125 8 Daniel Dehennin
buildd@buildd:~$ export YOUR_VG=build dist=lucid arch=amd64
126 2 Daniel Dehennin
</pre>