Projet

Général

Profil

GitPackagingSbuildCommon » Historique » Version 7

Daniel Dehennin, 10/01/2012 10:54
Suppression des parties spécifiques à LVM et btrfs

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 4 Daniel Dehennin
buildd@build:~$ sudo /bin/sh -c "echo deb http://eoleng.ac-dijon.fr/eoleng/ eole-2.3/all/ >> /etc/apt/sources.list.d/eole.list"
89 4 Daniel Dehennin
buildd@build:~$ sudo apt-get update
90 4 Daniel Dehennin
buildd@build:~$ sudo apt-get --force-yes -y install ubuntu-keyring
91 4 Daniel Dehennin
buildd@build:~$ sudo apt-key add /usr/share/keyrings/ubuntu-archive-keyring.gpg
92 4 Daniel Dehennin
buildd@build:~$ sudo apt-get update
93 2 Daniel Dehennin
</pre>
94 2 Daniel Dehennin
95 2 Daniel Dehennin
h2. Création d’un volume logique dédié aux builds
96 2 Daniel Dehennin
97 2 Daniel Dehennin
Ce volume sera monté dans chaque snapshot lors d’un build afin de ne
98 2 Daniel Dehennin
pas surcharger les snapshots de construction.
99 2 Daniel Dehennin
100 2 Daniel Dehennin
<pre>
101 4 Daniel Dehennin
buildd@build:~$ sudo lvcreate -L20g -n var+lib+sbuild+build ${YOUR_VG}
102 4 Daniel Dehennin
buildd@build:~$ sudo mkfs.ext4 -L /var/lib/sbuild/build -m0 /dev/${YOUR_VG}/var+lib+sbuild+build
103 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"
104 4 Daniel Dehennin
buildd@build:~$ sudo mount /var/lib/sbuild/build
105 2 Daniel Dehennin
</pre>
106 2 Daniel Dehennin
107 2 Daniel Dehennin
h2. Création des environnements de build
108 2 Daniel Dehennin
109 2 Daniel Dehennin
La gestion des environnements de build est faite par schroot et peut
110 2 Daniel Dehennin
utiliser plusieurs systèmes afin de partager une image de base et ainsi
111 2 Daniel Dehennin
gagner du temps lors des compilation :
112 2 Daniel Dehennin
113 2 Daniel Dehennin
* Les volumes logiques ;
114 2 Daniel Dehennin
* Le système de fichier @btrfs@.
115 2 Daniel Dehennin
116 2 Daniel Dehennin
Nous partirons du principe que :
117 2 Daniel Dehennin
118 2 Daniel Dehennin
* la variable d’environnement @${YOUR_VG}@ contient le nom de votre
119 2 Daniel Dehennin
  groupe de volume ;
120 2 Daniel Dehennin
121 2 Daniel Dehennin
* La variable d’environnement @${dist}@ contient le nom de la
122 2 Daniel Dehennin
  distribution ;
123 2 Daniel Dehennin
124 2 Daniel Dehennin
* La variable d’environnement @${arch}@ contient le nom de
125 2 Daniel Dehennin
  l’architecture ;
126 2 Daniel Dehennin
127 2 Daniel Dehennin
<pre>
128 4 Daniel Dehennin
buildd@buildd:~$ export YOUR_VG@build dist@lucid arch=amd64
129 2 Daniel Dehennin
</pre>