Il est toujours dangereux d'être en désaccord avec Emmet, alors permettez-moi de commencer en reconnaissant que sa réponse est probablement plus correcte. Cependant, je trouve personnellement pbuilder plus convivial et plus performant.
Si vous utilisez Ubuntu 12.10 ou une version ultérieure, assurez-vous d'installer les excellents scripts pbuilder, qui sont un ensemble d' encapsuleurs extrêmement conviviaux autour de pbuilder brut.
Si vous êtes sur Ubuntu 12.04, vous pouvez installer les scripts pbuilder depuis le référentiel backports.
Maintenant, comparons et contrastons la convivialité des opérations équivalentes. Dans ces exemples, je vais parcourir l'utilisation d'un chroot ARM hébergé sur x86, mais les concepts s'appliquent toujours à un chroot x86 hébergé sur x86 également. N'oubliez pas, j'utilise les wrappers pbuilder-scripts.
Une chose à noter est que les scripts pbuilder implémentent un peu de convention, similaire à la façon dont Ruby on Rails prend certaines décisions pour vous afin que vous puissiez y aller rapidement. Je vais essayer de les signaler au fur et à mesure.
Créer un chroot
mk-sbuild --arch=armhf quantal
contre
# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf
verdict: tie , les deux lignes de commande sont assez simples, et les deux peuvent prendre des options supplémentaires pour des cas d'utilisation plus sophistiqués si nécessaire. Cependant, notez le nouveau répertoire supplémentaire créé par pcreate.
Télécharger un package source
# standard debian/ubuntu method, works in any directory
apt-get source casper
contre.
# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper
verdict: léger avantage pour sbuild , car vous utilisez les meilleures pratiques standard debian / ubuntu. La convention utilisée par pget peut sembler étrange au premier abord, mais comme je travaille sur plusieurs packages sur plusieurs versions d'Ubuntu, j'aime l'organisation qu'elle impose. Notez également que la source apt-get extrait également la source partout où vous exécutez la commande, vous laissant avec * .orig.tar.gz, * .debian.tar.gz, * .dsc et le répertoire étendu, que je trouve personnellement pour être en désordre. La beauté de l'organisation arrive bientôt, je le promets.
Entrez dans le chroot, version éphémère
schroot -c quantal-armhf
contre.
ptest quantal-armhf
verdict: léger avantage pour pbuild , moins de caractères à taper est moins de caractères. Notez que dans cette version d'entrée du chroot, toutes les modifications que vous apportez ici seront perdues une fois que vous aurez quitté le chroot. Notez également que dans schroot, vous resterez un utilisateur normal alors qu'avec ptest, vous serez dans le chroot en tant qu'utilisateur root.
Entrez le chroot, enregistrez la version des modifications
sudo schroot -c quantal-armhf-source -u root
contre.
ptest quantal-armhf --save
verdict: léger avantage pour pbuild , moins de caractères et des arguments de ligne de commande plus intuitifs, à mon avis. Dans cette version de saisie du chroot, toutes les modifications que vous y apporterez seront enregistrées pour de futures invocations.
Construisez un paquet dans le chroot
debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc
contre.
# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild
verdict: pbuild , nous voyons maintenant la première victoire significative lors de l'utilisation des conventions de pbuild. Il s'agit d'une commande simple et morte qui n'a rien d'autre à retenir, par rapport à la spécification de l'architecture, du nom de chroot et nécessitant un chemin vers un fichier * .dsc requis par sbuild. De plus, vous devez vous rappeler de générer un nouveau fichier * .dsc avec sbuild alors que pbuild le fera automatiquement pour vous.
Construisez le même paquet dans chroot, une deuxième fois
Dans l'exemple ci-dessus, sbuild et pbuild téléchargeront et installeront les build-deps dans leurs chroots respectifs. Cependant, pbuild enregistre les fichiers .deb téléchargés dans / var, donc si vous appelez pbuild une deuxième fois, vous n'avez pas besoin de télécharger à nouveau tous les build-deps (bien qu'ils doivent toujours être installés dans le chroot). sbuild ne met pas en cache les fichiers .deb (du moins pas par défaut), et par conséquent, vous devez télécharger à nouveau tous les build-dep en plus d'attendre qu'ils soient installés dans le chroot.
verdict: pbuild par un long shot. La mise en cache des build-dep est un excellent paramètre par défaut, et pbuild est assez intelligent pour détecter s'il existe une version plus récente d'un build-dep dans l'archive et tirera la nouvelle version si nécessaire. Pour un package complexe avec de nombreux build-deps, ce paramètre simple vous fera économiser des minutes de votre vie.
Sommaire
Hors de la boîte, je trouve que les scripts pbuilder sont beaucoup plus conviviaux et plus rapides que les équivalents sbuild. Bien sûr, il existe des moyens de rendre pbuilder encore plus rapide (construire dans un tmpfs, désactiver certains des crochets chroot), et il y a probablement les mêmes astuces pour sbuild aussi, mais je ne les connais pas.
J'espère que cela t'aides.
sbuild
est utilisé pour créer les packages d'Ubuntu même si le tableau de bord (d'après ce que je comprends) fonctionnepbuilder
...