Mettre en place un service d'empaquetage

Vous trouverez ici une antisèche pour mettre en place un service d'empaquetage pour Debian. Andreas Barth a écrit ce document lorsqu'il a mis en place des services d'empaquetage pour experimental et backports.org, il est donc possible qu'il ne soit pas complètement cohérent avec la mise en place réalisée sur les machines des développeurs qui sont utilisées comme serveurs d'empaquetage automatique.

Pour réaliser un service d'empaquetage, vous pouvez soit utiliser le service d'empaquetage situé sur db.debian.org, ou en extraire un depuis les sources de wanna-build. Si vous souhaitez utiliser la version de db.debian.org, veuillez ajouter deb http://db.debian.org debian-admin/ au fichier sources.list et installer buildd.

Par ailleurs, vous avez besoin d'un debootstrap récent afin de pouvoir mettre en place des « chroots » pour testing et unstable. Vous aurez alors peut-être besoin d'un rétroportage pour cela. Vous pouvez soit le prendre sur un dépôt de rétroportage ou alors le réempaqueter depuis le paquet source vous-même.

Vous devez créer les répertoires suivants (sous /org/buildd/) :

install -d build mqueue -o buildd -g buildd
install -d chroots -m 755
install -d logs stats -o buildd -g buildd
install -d secret -o buildd -g adm -m 2770
install -d /var/debbuild/srcdep-lock -o buildd
install -d /var/lib/sbuild/srcdep-lock -o buildd
install -d chroots/sid/var/debbuild/srcdep-lock -o buildd
install -d chroots/sid/build/buildd -m 777
install -d chroots/woody-backports/var/debbuild/srcdep-lock -o buildd
install -d chroots/woody-backports/build/buildd -m 777
install -d bin -o buildd -g adm -m 775
cp /etc/passwd chroots/sid/etc/
cp /etc/passwd chroots/woody-backports/etc/
ln -s source-dependencies-unstable /etc/source-dependencies-sid-nonfree
sudo ln -s source-dependencies-stable /etc/source-dependencies-woody-backports.org

Ajouter les « chroots » :

sudo debootstrap --variant=buildd sid chroots/sid http://ftp.debian.org/debian
sudo ln -s /org/buildd/chroots/sid/ build/chroot-unstable

Mettre ensuite à jour et installer les paquets nécessaires :

sudo chroot chroots/sid apt-get update
sudo chroot chroots/sid apt-get install fakeroot build-essential sudo debfoster
sudo chroot chroots/sid debfoster

et pour les rétroportage woody également :

sudo debootstrap --variant=buildd woody chroots/woody-backports http://ftp.debian.org/debian
sudo ln -s /org/buildd/chroots/woody-backports/ build/chroot-woody-backports.org

Éditons chroots/woody-backports/etc/apt/sources.list

deb http://ftp.debian.org/debian woody main non-free contrib
deb-src http://ftp.debian.org/debian woody main non-free contrib
deb-src ftp://linux.mathematik.tu-darmstadt.de/pub/linux/distributions/debian-backports/debian woody all

Mettons à jour et installons quelques petites choses :

sudo chroot chroots/woody-backports apt-get update
sudo chroot chroots/woody-backports apt-get install fakeroot build-essential sudo debfoster
sudo chroot chroots/woody-backports debfoster

OK, créons le .sbuildrc

# Adresse de courriel où les journaux sont envoyés (obligatoire, pas de
# valeur par défaut !)
$mailto = 'ce que vous voulez';

# Nom du responsable à utiliser dans les fichiers .changes (obligatoire,
# pas de valeur par défaut !)
$maintainer_name='ce qui devra être dans le fichier .changes';

#$fakeroot='/usr/bin/sudo';
$fakeroot='/usr/bin/fakeroot';

%dist_order = ( 'oldstable-security' => 0, stable => 1, 'stable-security' => 1, testing => 2, 'testing-security' => 2, unstable => 3, 'woody-backports.org' => 5, 'sarge-backports.org' => 6, experimental => 7 );

N'oubliez pas d'ajouter l'utilisateur du service d'empaquetage au fichier de configuration de sudo de façon à ce qu'il puisse lancer les outils sans restriction.

OK, testons le tout maintenant : allons dans ~buildd/build et empaquetons un paquet :

sbuild -d unstable -v netpbm-nonfree_2:9.20-2
sbuild -d woody-backports.org -v arj_3.10.19-1.backports.org.1

Ajoutons |/usr/bin/buildd-mail-wrapper à ~buildd/.forward de façon à pouvoir répondre aux courriels des services d'empaquetage.

Vous devez aussi modifier ~buildd/buildd.conf - mais désolé, il n'y a pas d'antisèche pour cela, parce que cela dépend de votre wanna-build.

Vous pouvez obtenir plus d'informations sur les détails concernant les états du service d'empaquetage ici. Veuillez répondre aux courriels des services d'empaquetage soit avec le fichier .changes signé, soit avec « give-back », « retry », « dep-wait », « failed », « dep-wait<dependencies> », « failed\n<why it failed> ».

Vous pouvez utiliser les tâches suivantes comme des tâches automatisées dans le cron :

@reboot        touch ~buildd/NO-DAEMON-PLEASE
17 * * * * /usr/bin/buildd-watcher
47 * * * * /usr/bin/buildd-uploader