Ceci est une ancienne révision du document !
Versions concernées
- Ubuntu 4.10 "warty warthog"
- Ubuntu 5.04 "hoary hedgehog"
- Ubuntu 5.10 "breezy badger"
- Ubuntu 6.06.1 LTS "dapper drake"
- Ubuntu 6.10 "edgy eft"
Introduction
Ce document décrit les étapes nécessaires pour mettre en place un environnement de construction sain pour contruire des paquets Ubuntu. Cet outil est recommendé pour les mainteneurs Ubuntu comme pour toute personne utilisant Ubuntu et intéressée par la construction des paquets.
Il est possible de construire les paquets sans utiliser pbuilder, mais cela nécessite d'avoir installé au préalable sur votre système toutes les dépendances pour le compiler.
Installation
Ubuntu Dapper 6.06.1 LTS et supérieures
La dernière version du paquet pbuilder devrait fonctionner sans problème. Il vous suffit de l'installer, puis d'exécuter :
sudo pbuilder create
Ubuntu 4.10, 5.04 et 5.10
La procédure est un petit peu plus compliquée. De même, installez les paquets pbuilder et debootstrap. Ensuite, il faut éditer les lignes suivantes dans /etc/pbuilder/pbuilderrc :
MIRRORSITE=http://archive.ubuntu.com/ubuntu DISTRIBUTION=breezy
Pbuilder risque de se plaindre que les paquets ne sont pas authentifiés. Pour autoriser cela, éditez une nouvelle fois le fichier /etc/pbuilder/pbuilderrc :
APTCONFDIR="/etc/pbuilder/apt.config/"
Maintenant, copiez les fichiers nécessaires de /etc/apt :
sudo -s mkdir /etc/pbuilder/apt.config/ cp -ar /etc/apt/* /etc/pbuilder/apt.config/ echo "APT::Get::AllowUnauthenticated 1;" >> /etc/pbuilder/apt.config/apt.conf.d/allow-unauthenticated exit
Note : Assurez-vous de supprimer le fichier 99update-notifier de /etc/pbuilder/apt.config/apt.conf.d/ si vous l'avez copié à l'étape précédente. Cela peut potentiellement casser les futures mises à jour de votre chroot pbuilder, puisque le paquet update-notifier ne sera pas normalement installé.
Exécutez la commande suivante pour créer votre chroot pour breezy :
sudo pbuilder create --distribution breezy
(Re)construction d'un paquet
Construire le paquet mon-paquet se fait avec la commande suivante :
sudo pbuilder build mon-paquet_1.0.dsc
Le ou les paquets seront disponibles dans le dossier /var/cache/pbuilder/result
Note : Si vous obtenez l'erreur "debootstrap does not exist", installez debootstrap ou exécutez pbuilder avec l'option –debootstrap cdebootstrap (vous avez probablement cdebootstrap installé).
Mise à jour du chroot
Il est recommendé de mettre à jour votre chroot avant chaque construction ; pour ce faire, utilisez la commande ci-dessous :
sudo pbuilder update
Support des dépôts Universe
Ubuntu Dapper 6.06.1 LTS et Ubuntu 6.10
Décommentez la ligne suivante dans le fichier /etc/pbuilderrc :
COMPONENTS="main restricted universe multiverse"
Maintenant il est nécessaire de remettre à jour le chroot avec la nouvelle configuration :
sudo pbuilder update --override-config
Ubuntu warty 4.10, hoary 5.04 et breezy 5.10
Éditez une nouvelle fois /etc/pbuilderrc :
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu breezy universe multiverse"
Maintenant il est nécessaire de remettre à jour le chroot avec la nouvelle configuration :
sudo pbuilder update --distribution breezy --override-config
Mise à niveau vers la dernière version en développement
Si vous êtes désireux de participer au cycle actuel de développement, vous allez vouloir un chroot feisty. Quelques fois, il se peut que la version en développement ne soit pas installable directement. Dans ce cas, il vous faut d'abord installer la dernière version stable, puis mettre à niveau vers la version en développement :
- changez toutes les occurrences de edgy en feisty dans /etc/pbuilderrc and /etc/pbuilder/apt.config/
- sudo pbuilder update –override-config
- utilisez l'option –override-config à chaque mise à jour
Pbuilders multiples
Quand on travaille sur des paquets, il est souvent nécessaire de disposer de plusieurs pbuilders sur sa machine, par exemple pour rétro-porter vers Breezy alors que l'on développe Dapper, ou encore pour tester les paquets sur Sid à la recherche de bogues.
Pour ce faire, vous pouvez adapter le fichier /usr/share/doc/pbuilder/examples/pbuilder-distribution.sh, qui contient par défaut : <codee> #!/bin/sh # script from Jamin W. Collins BTS: #255165 # name this script 'pbuilder-woody', 'pbuilder-sid', 'pbuilder-sarge', 'pbuilder-experimental' etc. # # The script currently contains a minor, but harmless error # See https://launchpad.net/distros/ubuntu/+source/pbuilder/+bug/57284
OPERATION=$1 DISTRIBUTION=`basename $0 | cut -f2 -d '-'` PROCEED=false BASE_DIR="$HOME/pbuilder" case $OPERATION in
create|update|build|clean|login|execute ) PROCEED=true ;;
esac if ( $PROCEED == true ) then
shift sudo pbuilder $OPERATION \ --basetgz $BASE_DIR/$DISTRIBUTION-base.tgz \ --distribution $DISTRIBUTION \ --buildresult $BASE_DIR/result $@
else
echo "Invalid command..." echo "Valid commands are:" echo " create" echo " update" echo " build" echo " clean" echo " login" echo " execute" exit 1
fi </code> Renommez-le pour la distribution que vous voulez (pbuilder-edgy par exemple), copiez le dans /usr/local/bin/. Étant donné que le dossier /var/cache/pbuilder est défini par défaut pour les pbuilders, il est recommendé d'effectuer les changements suivants :
#!/bin/sh # script from Jamin W. Collins BTS: #255165 # name this script 'pbuilder-woody', 'pbuilder-sid', 'pbuilder-sarge' etc. # # The script currently contains a minor, but harmless error # See https://launchpad.net/distros/ubuntu/+source/pbuilder/+bug/57284 OPERATION=$1 DISTRIBUTION=`basename $0 | cut -f2 -d '-'` PROCEED=false BASE_DIR="/var/cache/pbuilder" case $OPERATION in create|update|build|clean|login|execute ) PROCEED=true ;; esac if ( $PROCEED == true ) then shift sudo /usr/sbin/pbuilder $OPERATION \ --basetgz $BASE_DIR/$DISTRIBUTION/base.tgz \ --distribution $DISTRIBUTION \ --configfile $BASE_DIR/$DISTRIBUTION/pbuilderrc \ --aptconfdir $BASE_DIR/$DISTRIBUTION/apt.config \ --buildresult $BASE_DIR/$DISTRIBUTION/result $@ else echo "Invalid command..." echo "Valid commands are:" echo " create" echo " update" echo " build" echo " clean" echo " login" echo " execute" exit 1 fi
N'oubliez pas de le rendre exécutable, en tapant :
sudo chmod +x /usr/local/bin/pbuilder-edgy
Maintenant, vous devriez créer le dossier /var/cache/pbuilder/<DISTRIBUTION> (par exemple /var/cache/pbuilder/edgy/), copiez-y les fichiers corrects de configuration (voir sections précédentes), puis exécutez pbuilder-edgy create pour créer le chroot à cet emplacement. Il vous est possible de renouveler l'opération pour chaque distribution (par exemple pbuilder-breezy, pbuilder-sarge, pbuilder-sid, etc.).
Ressources annexes
Le manuel de l'utilisateur de pbuilder: http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html
Cette page est une traduction inspirée de https://wiki.ubuntu.com/PbuilderHowto par mr_pouit