Selalu berbahaya untuk tidak setuju dengan Emmet, jadi izinkan saya memulai dengan mengakui bahwa jawabannya mungkin lebih benar. Namun, saya pribadi menemukan pbuilder lebih ramah pengguna dan lebih performan di luar kotak.
Jika Anda menggunakan Ubuntu 12.10 atau lebih baru, pastikan untuk menginstal skrip pbuilder yang luar biasa, yang merupakan sekumpulan pembungkus yang sangat ramah di sekitar pbuilder mentah.
Jika Anda menggunakan Ubuntu 12.04 Anda dapat menginstal skrip pbuilder dari repositori backports.
Sekarang, mari kita bandingkan dan kontraskan keramahan pengguna terhadap operasi yang setara. Dalam contoh-contoh ini, saya akan berjalan menggunakan chroot ARM yang di-host di x86, tetapi konsep-konsepnya masih berlaku untuk chroot x86 yang di-host di x86 juga. Ingat, saya menggunakan pembungkus pbuilder-script.
Satu hal yang perlu diperhatikan adalah bahwa pbuilder-scripts menerapkan sedikit konvensi, mirip dengan bagaimana Ruby on Rails membuat beberapa keputusan untuk Anda sehingga Anda dapat berjalan dengan cepat. Saya akan mencoba dan menunjukkan ini saat kita pergi.
Buat 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
putusan: tie , kedua baris perintah cukup sederhana, dan keduanya dapat mengambil opsi tambahan untuk kasus penggunaan yang lebih menarik jika diperlukan. Namun, harap perhatikan direktori baru tambahan yang dibuat oleh pcreate.
Unduh paket sumber
# standard debian/ubuntu method, works in any directory
apt-get source casper
vs.
# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper
putusan: sedikit tepi untuk sbuild , karena Anda menggunakan praktik terbaik debian / ubuntu standar. Konvensi yang digunakan oleh pget mungkin tampak aneh pada awalnya, tetapi karena saya mengerjakan banyak paket di beberapa rilis Ubuntu, saya suka organisasi yang diterapkannya. Perhatikan juga bahwa sumber apt-get juga mengekstrak sumber di mana pun Anda menjalankan perintah, meninggalkan Anda dengan * .orig.tar.gz, * .debian.tar.gz, * .dsc dan direktori yang diperluas, yang secara pribadi saya temukan untuk menjadi berantakan. Keindahan organisasi akan segera datang, saya janji.
Masukkan chroot, versi sesaat
schroot -c quantal-armhf
vs.
ptest quantal-armhf
putusan: sedikit tepi untuk pbuild , lebih sedikit karakter untuk diketik lebih sedikit karakter. Perhatikan bahwa dalam versi memasukkan chroot ini, setiap perubahan yang Anda lakukan di sini akan hilang begitu Anda keluar dari chroot. Perhatikan juga bahwa di schroot, Anda akan tetap menjadi pengguna normal sedangkan dengan ptest, Anda akan berada di chroot sebagai pengguna root.
Masukkan chroot, simpan versi perubahan
sudo schroot -c quantal-armhf-source -u root
vs.
ptest quantal-armhf --save
putusan: sedikit tepi untuk pbuild , karakter lebih sedikit dan argumen baris perintah yang lebih intuitif, menurut saya. Dalam versi memasukkan chroot ini, setiap perubahan yang Anda lakukan di dalamnya akan disimpan untuk doa selanjutnya.
Buat paket di dalam chroot
debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc
vs.
# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild
putusan: pbuild , sekarang kita melihat kemenangan signifikan pertama saat menggunakan konvensi pbuild. Ini adalah perintah sederhana yang mati untuk mengingat, selain menentukan arsitektur, nama chroot, dan membutuhkan path ke file * .dsc yang dibutuhkan oleh sbuild. Selain itu, Anda harus ingat untuk membuat file * .dsc baru dengan sbuild sedangkan pbuild akan melakukannya secara otomatis untuk Anda.
Bangun paket yang sama di chroot, untuk kedua kalinya
Pada contoh di atas, sbuild dan pbuild akan mengunduh dan menginstal build-deps di chroot masing-masing. Namun, pbuild menyimpan file .deb yang diunduh di / var, jadi jika Anda memanggil pbuild untuk kedua kalinya, Anda tidak harus mengunduh semua build-deps lagi (walaupun masih harus diinstal di chroot). sbuild tidak men-cache file .deb (setidaknya tidak secara default), dan karena itu, Anda harus mengunduh semua build-deps lagi selain menunggu mereka diinstal di chroot.
putusan: pbuild dengan tembakan panjang. Caching build-deps adalah pengaturan default yang bagus, dan pbuild cukup pintar untuk mendeteksi jika ada versi build-dep yang lebih baru dalam arsip dan akan menarik versi baru jika diperlukan. Untuk paket kompleks dengan banyak build-deps, pengaturan sederhana ini akan menghemat menit hidup Anda.
Ringkasan
Di luar kotak, saya menemukan skrip pbuilder menjadi lebih ramah dan lebih cepat dari padanan sbuild. Tentu saja, ada cara untuk membuat pbuilder lebih cepat (membangun tmpfs, menonaktifkan beberapa chroot hooks), dan mungkin ada trik yang sama untuk sbuild juga, tetapi saya tidak menyadarinya.
Semoga ini membantu.
sbuild
digunakan untuk membuat paket-paket Ubuntu meskipun launchpad (dari apa yang saya mengerti) berjalanpbuilder
...