GitPackagingSbuildPostInstall » Historique » Version 5
« Précédent -
Version 5/16
(diff) -
Suivant » -
Version actuelle
Daniel Dehennin, 23/11/2012 12:26
Plus besoin de la liste avec le test sur l’architecture
Gestion des alias¶
Nous venons de créer des schroots Ubuntu Lucid Lynx dans lesquels les builds seront effectués.
Il nous reste à déclarer que ces schroots seront utilisés pour compiler des paquets pour notre distribution, nos distributions en prenant en compte les variantes -security
, -updates
, -proposed
et -dev
.
Cette étape est importante afin que les paquets compilés pour une distribution soient répartis dans la bonne distribution sur le dépôt de paquets deb.
La commande suivante créé un fichier .changes
contenant la distribution eole-2.3-dev
, ce fichier étant utilisé pour le triage :
buildd@build:~$ sbuild -d eole-2.3-dev $package_$version.dsc
Nous configurons les alias en ajoutant une ligne:
system@build:~$ sudo sed -i \ -e "/type=/ialiases=eole-2.3,eole-2.3-dev,eole-2.3-proposed,eole-2.3-security" \ /etc/schroot/chroot.d/$dist-$arch-sbuild*
Les alias ci-dessus font que l’appel à sbuild -d eole-2.3-dev
utilisera l’architecture AMD64
par défaut.
La création d’un schroot i386
devrait ajouter des alias contenant l’architecture afin de ne pas entrer en conflit :
system@build:~$ sudo sed -i \ -e "/type=/ialiases=eole-2.3-i386,eole-2.3-dev-i386,eole-2.3-proposed-i386,eole-2.3-security-i386" \ /etc/schroot/chroot.d/$dist-$arch-sbuild*
Ainsi, la commande sbuild -d eole-2.3-dev --arch=i386
utilisera le schroot i386
et non le AMD64
.
Autoriser l’utilisateur system à installer des paquets dans les schroots¶
Il faut en premier lieu configurer sudo
:
system@build:~$ sudo /bin/sh -c "cat >> `expr /etc/sudoers.d/apt` <<EOT Cmnd_Alias APT_INSTALL = /usr/bin/apt-get install *, /usr/bin/dpkg -i *.deb Cmnd_Alias APT_REMOVE = /usr/bin/apt-get remove *, /usr/bin/apt-get purge * Cmnd_Alias APT_CLEAN = /usr/bin/apt-get clean, /usr/bin/apt-get --purge autoremove, /usr/bin/orphaner --purge Cmnd_Alias APT_UPGRADE = /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade system ALL=NOPASSWD : APT_INSTALL, APT_REMOVE, APT_CLEAN, APT_UPGRADE
Il faut ensuite ajouter ce fichier à la liste des fichiers à copier dans les schroot
:
system@build:~$ sudo /bin/sh -c "cat >> `expr /etc/schroot/sbuild/copyfile` <<EOT /etc/sudoers.d/apt EOT "
Accélération de la création de paquet¶
Le système de packaging dpkg
utilise intensément l’appel systeme fsync afin d’assurer au maximum la cohérence des systèmes de fichiers.
Cette frénésie de fsync
ralenti considérablement les accès disques et n’est pas primordiale lors de la compilation d’un paquet.
On peut donc installer le paquet eatmydata à l’intérieur des schroot
et les configurer pour inhiber les appels à fsync
:
Pour Lucid Lynx, le paquet est disponible et supporté dans les backports
qui ne sont pas activé par défaut, on peut télécharger et installer le paquet manuellement.
system@build:~$ EAT_URL=$([ $(dpkg --print-architecture) = "amd64" ] && echo 'http://launchpadlibrarian.net/68861934/eatmydata_26-2~lucid1_amd64.deb' || echo 'http://launchpadlibrarian.net/68861936/eatmydata_26-2~lucid1_i386.deb') system@build:~$ (cd /tmp; schroot -c source:$dist-$arch-sbuild -- \ /bin/bash -c \ "sudo apt-get install wget \ && wget ${EAT_URL} \ && sudo dpkg -i eatmydata_26-2~lucid1_$arch.deb")
Pour Precise Pangolin le paquet est disponible dans les composants universe
qui a été activé lors de la création du schroot
.
system@build:~$ (cd /tmp; schroot -c source:$dist-$arch-sbuild -- \ /bin/bash -c \ "sudo apt-get install eatmydata")
Il faut ensuite ajouter une configuration au schroot
:
system@build:~$ sudo /bin/sh -c "cat >> `expr /etc/schroot/chroot.d/$dist-$arch-sbuild*` <<EOT command-prefix=eatmydata EOT "