Ceci est une ancienne révision du document !



P-Builder, ou comment bien construire des paquets

Ce document décrit les étapes nécessaires pour mettre en place un environnement de construction sain pour construire des paquets Ubuntu. Cet outil est recommandé 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 P-Builder, mais cela nécessite d'avoir installé au préalable sur votre système toutes les dépendances pour le compiler.

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

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é).

Il est recommandé de mettre à jour votre chroot avant chaque construction ; pour ce faire, utilisez la commande ci-dessous :

sudo pbuilder update

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

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

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 :

#!/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

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.).

Le manuel de l'utilisateur de pbuilder: http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html


Contributeurs : Cette page est une traduction inspirée de https://wiki.ubuntu.com/PbuilderHowto par mr_pouit

  • pbuilder.1176589702.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)