Es ist immer gefährlich, mit Emmet nicht einverstanden zu sein. Lassen Sie mich zunächst anerkennen, dass seine Antwort wahrscheinlich korrekter ist. Ich persönlich finde pbuilder jedoch benutzerfreundlicher und leistungsfähiger.
Wenn Sie mit Ubuntu 12.10 oder neuer arbeiten, müssen Sie die hervorragenden pbuilder-Skripte installieren, die eine Reihe äußerst benutzerfreundlicher Wrapper für raw pbuilder darstellen.
Wenn Sie mit Ubuntu 12.04 arbeiten, können Sie die pbuilder-Skripte aus dem Backports-Repository installieren.
Vergleichen und kontrastieren wir nun die Benutzerfreundlichkeit gleichwertiger Operationen. In diesen Beispielen werde ich eine auf x86 gehostete ARM-Chroot verwenden, die Konzepte gelten jedoch auch für eine auf x86 gehostete x86-Chroot. Denken Sie daran, ich verwende die pbuilder-scripts-Wrapper.
Zu beachten ist, dass die pbuilder-Skripte eine gewisse Konvention implementieren, ähnlich wie Ruby on Rails einige Entscheidungen für Sie trifft, damit Sie schnell loslegen können. Ich werde versuchen, darauf hinzuweisen, wenn wir gehen.
Erstellen Sie eine Chroot
mk-sbuild --arch=armhf quantal
vs
# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf
Fazit: Unentschieden , beide Befehlszeilen sind ziemlich einfach und beide können bei Bedarf zusätzliche Optionen für anspruchsvollere Anwendungsfälle verwenden. Beachten Sie jedoch das zusätzliche neue Verzeichnis, das von pcreate erstellt wurde.
Laden Sie ein Quellpaket herunter
# standard debian/ubuntu method, works in any directory
apt-get source casper
gegen
# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper
fazit : leichter rand für sbuild , weil du standard debian / ubuntu best practice verwendest. Die von pget verwendete Konvention mag auf den ersten Blick seltsam erscheinen, aber da ich an mehreren Paketen in mehreren Ubuntu-Versionen arbeite, mag ich die Organisation, die sie auferlegt. Beachten Sie auch, dass apt-get source den Quellcode an jedem Ort extrahiert, an dem Sie den Befehl ausführen. Dabei verbleiben die Dateien * .orig.tar.gz, * .debian.tar.gz, * .dsc und das erweiterte Verzeichnis, das ich persönlich finde unordentlich sein. Die Schönheit der Organisation kommt bald, das verspreche ich.
Geben Sie die Chroot, vergängliche Version
schroot -c quantal-armhf
gegen
ptest quantal-armhf
Urteil: Leichte Kante für pbuild , weniger zu tippende Zeichen sind weniger Zeichen. Beachten Sie, dass in dieser Version des Eintritts in die Chroot alle Änderungen, die Sie hier vornehmen, verloren gehen, sobald Sie die Chroot verlassen. Beachten Sie auch, dass Sie in schroot ein normaler Benutzer bleiben, während Sie in ptest als Root-Benutzer in der chroot sind.
Geben Sie die Chroot ein, speichern Sie die geänderte Version
sudo schroot -c quantal-armhf-source -u root
gegen
ptest quantal-armhf --save
fazit : meiner meinung nach leichter rand für pbuild , weniger zeichen und intuitivere befehlszeilenargumente . In dieser Version von chroot werden alle darin vorgenommenen Änderungen für zukünftige Aufrufe gespeichert.
Erstellen Sie ein Paket in der Chroot
debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc
gegen
# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild
Urteil: pbuild , jetzt sehen wir den ersten signifikanten Gewinn, wenn wir die Konventionen von pbuild verwenden. Dies ist ein ganz einfacher Befehl, an den man sich nichts anderes merken muss, als die Architektur und den Namen von chroot anzugeben und einen Pfad zu einer * .dsc-Datei anzugeben, die sbuild benötigt. Darüber hinaus müssen Sie daran denken, mit sbuild eine neue * .dsc-Datei zu generieren, wohingegen pbuild dies automatisch für Sie erledigt.
Erstellen Sie dasselbe Paket ein zweites Mal in chroot
Im obigen Beispiel werden sowohl sbuild als auch pbuild die Build-Deps herunterladen und in ihren jeweiligen Chroots installieren. Pbuild speichert jedoch die heruntergeladenen .deb-Dateien in / var. Wenn Sie also pbuild ein zweites Mal aufrufen, müssen Sie nicht alle build-deps erneut herunterladen (obwohl sie noch in der chroot installiert sein müssen). sbuild speichert die .deb-Dateien nicht im Cache (zumindest nicht standardmäßig). Daher müssen Sie alle build-deps erneut herunterladen und darauf warten, dass sie in der chroot installiert werden.
Fazit : Bei weitem nicht . Das Cachen der Build-Deps ist eine großartige Standardeinstellung, und pbuild ist intelligent genug, um zu erkennen, ob es eine neuere Version einer Build-Dep im Archiv gibt, und wird die neue Version bei Bedarf herunterladen. Bei einem komplexen Paket mit vielen Build-Deps erspart Ihnen diese einfache Einstellung Minuten Ihres Lebens.
Zusammenfassung
Ich finde, dass pbuilder-Skripte viel benutzerfreundlicher und schneller sind als die sbuild-Entsprechungen. Natürlich gibt es Möglichkeiten, pbuilder noch schneller zu machen (tmpfs einbauen, einige der chroot-Hooks deaktivieren), und es gibt wahrscheinlich auch die gleichen Tricks für sbuild, aber ich kenne sie nicht.
Hoffe das hilft.
sbuild
wird verwendet, um die Pakete von Ubuntu zu erstellen, obwohl Launchpad (soweit ich weiß) ausgeführt wirdpbuilder
...