{{tag>Xenial paquet}} ---- ====== 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. =====Installation===== [[:tutoriel:comment_installer_un_paquet|Installez]] le paquet **pbuilder** puis générez l'environnement pbuilder avec la commande : sudo pbuilder --create Cette commande aura pour effet de créer un environnement isolé de votre système, appelé « chroot ». Cet environnement est en fait l'image du système tout frais après installation. En utilisant pbuilder pour construire vos paquets, vous serez alors sûr que le paquet s'installe bien sur tous les systèmes, même une Ubuntu venant d'être installée et sur laquelle l'utilisateur n'a installé aucun paquet supplémentaire. =====(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 fichier .dsc est une partie du paquet source - que pbuilder va utiliser pour construire le paquet binaire - est généré avec la commande **debuild**. Ceci est expliqué en détails dans la page de tutoriel traitant de la [[tutoriel:creer_un_paquet|création de paquets]] Le ou les paquets seront disponibles dans le dossier **/var/cache/pbuilder/result/** 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 recommandé de mettre à jour votre chroot avant chaque construction. Pour ce faire, utilisez la commande : sudo pbuilder update =====Support des dépôts Universe et Multiverse===== [[:tutoriel:comment_editer_un_fichier|éditez le fichier]] **/etc/pbuilderrc** et décommentez la ligne COMPONENTS="main restricted universe multiverse" À chaque modification de votre pbuilder, il faut le mettre à jour en prenant en compte la nouvelle configuration : sudo pbuilder update --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 **gutsy**. Quelquefois, 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. C'est le cas (actuellement pour Gutsy Gibbon). Voici donc la procédure : * Créez un pbuilder Feisty : //sudo pbuilder create// * Changez toutes les occurrences de **feisty** en **gutsy** dans **/etc/pbuilderrc** * Mettez à jour le chroot : //%%sudo pbuilder update --override-config%%// * Utilisez l'option //%%--override-config%%// à chaque mise à jour (tant que la version n'est pas prise en compte par pbuilder) =====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 Dapper et Edgy alors que l'on développe sous Feisty, ou encore pour tester les paquets sur Debian Sid à la recherche de bogues. Pour ce faire, le fichier **/usr/share/doc/pbuilder/examples/pbuilder-distribution.sh** va vous aider. Il 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. 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 version améliorer avec config priver en personnalisant la config fonctionne sur Ubuntu Debian et Fedora voir le projet sur bitbucket https://bitbucket.org/amidevous/fedora-rpm/src/master/pbuilder/ inclut fonction utile pour créer des multiples rapidement vous pouvez l'installer en 1 click mais je vous met le centos si dessus sudo wget https://bitbucket.org/amidevous/fedora-rpm/raw/d79b8453794e4105433df8a0041ceb40683642f0/pbuilder/debian/pbuilder-config -O /usr/bin/pbuilder-config && sudo chmod +x /usr/bin/pbuilder-config #!/bin/bash ubuntuori () { sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilderrc" -O /etc/pbuilderrc sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-ubuntu-stable" -O /usr/bin/pbuilder-$1 chmod +x /usr/bin/pbuilder-$1 sudo pbuilder-$1 create } ubuntuarc () { sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilderrc" -O /etc/pbuilderrc sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-ubuntu-old" -O /usr/bin/pbuilder-$1 chmod +x /usr/bin/pbuilder-$1 sudo pbuilder-$1 create } ubuntuarc2 () { sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilderrc" -O /etc/pbuilderrc sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-ubuntu-old2" -O /usr/bin/pbuilder-$1 chmod +x /usr/bin/pbuilder-$1 sudo pbuilder-$1 create } debianori () { sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilderrc" -O /etc/pbuilderrc sudo wget "https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-debian-stable" -O /usr/bin/pbuilder-$1 chmod +x /usr/bin/pbuilder-$1 sudo pbuilder-$1 create } # Ubuntu 24.04 The Noble Numbat (le Noble numbat) support Avril 2029 sudo rm -f /usr/share/debootstrap/scripts/noble sudo cp /usr/share/debootstrap/scripts/jammy /usr/share/debootstrap/scripts/noble ubuntuori noble #Ubuntu 23.10 The Mantic Minotaur (le Minotaure mantique) support Juillet 2024 sudo rm -f /usr/share/debootstrap/scripts/mantic sudo cp /usr/share/debootstrap/scripts/jammy /usr/share/debootstrap/scripts/mantic #ubuntuori mantic #Ubuntu 23.04 The Lunar Lobster (le Homard lunaire) support Janvier 2024 sudo rm -f /usr/share/debootstrap/scripts/lunar sudo cp /usr/share/debootstrap/scripts/jammy /usr/share/debootstrap/scripts/lunar #ubuntuori lunar #Ubuntu 22.10 The Kinetic Kudu (le Koudou cinétique) support 20 Juillet 2023 sudo rm -f /usr/share/debootstrap/scripts/kinetic sudo cp /usr/share/debootstrap/scripts/jammy /usr/share/debootstrap/scripts/kinetic #ubuntuarc kinetic #Ubuntu 22.04 LTS The Jammy Jellyfish (la méduse chanceuse) support Avril 2027 ubuntuori jammy #Ubuntu 21.10 The Impish Indri (indri espiègle) #ubuntuarc impish #Ubuntu 21.04 The Hirsute Hippo (l'hippopotame hirsute) #ubuntuarc hirsute #Ubuntu 20.10 The Groovy Gorilla (le gorille sensationnel) #ubuntuarc groovy #Ubuntu 20.04 LTS The Focal Fossa (le fossa focal) ubuntuori focal #Ubuntu 19.10 The Eoan Ermine (l'ermine de l'aube) #ubuntuarc eoan #Ubuntu 19.04 The Disco Dingo (le dingo disco) #ubuntuarc disco #Ubuntu 18.10 The Cosmic Cuttlefish (la seiche cosmique) #ubuntuarc cosmic #Ubuntu 18.04 LTS The Bionic Beaver (le castor bionique) #ubuntuori bionic #Ubuntu 17.10 The Artful Aardvark (l'oryctérope du Cap astucieux ) #ubuntuarc artful #Ubuntu 17.04 The Zesty Zapus (le zapus plaisant) #ubuntuarc zesty #Ubuntu 16.10 The Yakkety Yak (le yak bavard) #ubuntuarc yakkety # Ubuntu 16.04 LTS The Xenial Xerus (le xerus hospitalier) #ubuntuori xenial #Ubuntu 15.10 The Wily Werewolf (le loup-garou rusé) #ubuntuarc wily #Ubuntu 15.04 The Vivid Vervet (le vervet vif) #ubuntuarc vivid #Ubuntu 14.10 The Utopic Unicorn (la licorne utopique) #ubuntuarc utopic #Ubuntu 14.04 LTS The Trusty Tahr (le bélier confiant) #ubuntuori trusty #Ubuntu 13.10 The Saucy Salamander (la salamandre délurée) #ubuntuarc saucy #Ubuntu 13.04 The Raring Ringtail (le bassaris enthousiaste) #ubuntuarc raring #Ubuntu 12.10 The Quantal Quetzal (le quetzal quantique) #ubuntuarc quantal #Ubuntu 12.04 LTS The Precise Pangolin (le pangolin précis) #ubuntuarc2 precise #Ubuntu 11.10 The Oneiric Ocelot (l'ocelot onirique) #ubuntuarc2 oneiric # Debian 12 Bookworm (Rat de bibliothèque) #debianori bookworm # Debian 11 Bullseye (Bulle) #debianori bullseye ensuite créer facilement les configuration sudo pbuilder-config Copiez ce fichier dans **/usr/local/bin** en remplaçant //distribution// par le nom de la version d'Ubuntu voulue.\\ Par exemple pour créer un pbuilder Dapper, vous le nommerez **pbuilder-dapper** : sudo cp /usr/share/doc/pbuilder/examples/pbuilder-distribution.sh /usr/local/bin/pbuilder-dapper Ce même script renommé en pbuilder-edgy par exemple, créerai un pbuilder edgy. En effet, le script récupère le nom de distribution que vous avez mis après le tiret dans le nom de fichier. **Répertoire de base des pbuilders** Le dossier utilisé par défaut pour les pbuilders est **/var/cache/pbuilder/**. Nous allons donc modifier le script et remplacer la ligne BASE_DIR="$HOME/pbuilder" par BASE_DIR="/var/cache/pbuilder" Enfin, n'oubliez pas de rendre votre script exécutable : sudo chmod +x /usr/local/bin/pbuilder-dapper Enfin créez le chroot du pbuilder : sudo pbuilder-dapper create ===== Ressources ===== * [[https://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html|Le manuel de l'utilisateur de pbuilder]] * [[https://wiki.ubuntu.com/PbuilderHowto|Wiki officiel ubuntu sur pbuilder]] ---- inspirée de [[https://wiki.ubuntu.com/PbuilderHowto]] //Contributeurs : [[utilisateurs:mr_pouit]], [[:utilisateurs:_Enchained]]//