Завжди небезпечно не погоджуватися з Емметом, тому дозвольте почати з визнання, що його відповідь, ймовірно, більш правильна. Однак я особисто вважаю pbuilder більш зручним у користуванні та ефективнішим.
Якщо ви перебуваєте на Ubuntu 12.10 або пізнішої версії, не забудьте встановити відмінні сценарії pbuilder, які є набором надзвичайно доброзичливих обгортків навколо сирого pbuilder.
Якщо ви перебуваєте на Ubuntu 12.04, ви можете встановити сценарії pbuilder із сховища резервних списків.
Тепер порівняємо та порівняємо зручність користування аналогічних операцій. У цих прикладах я пройдуся за допомогою chroot ARM, розміщеного на x86, але поняття все ще застосовуються до x86 chroot, розміщеного на x86. Пам'ятайте, я використовую обгортки сценаріїв pbuilder.
Варто зазначити одне, що сценарії pbuilder реалізують трохи умовності, подібно до того, як Ruby on Rails приймає певні рішення для вас, щоб ви могли швидко піти. Я спробую вказати на це, коли ми йдемо.
Створіть chroot
mk-sbuild --arch=armhf quantal
проти
# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf
вердикт: прив'язати , обидва командні рядки досить прості, і обидва можуть взяти додаткові варіанти для випадкових випадків використання, якщо це потрібно. Однак зверніть увагу на додатковий новий каталог, створений pcreate.
Завантажте вихідний пакет
# 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
вердикт: незначна грань для sbuild , оскільки ви використовуєте стандартні найкращі практики debian / ubuntu. Конвенція, яку використовує pget, може спочатку здатися дивною, але оскільки я працюю над декількома пакетами в декількох випусках Ubuntu, мені подобається організація, яку вона нав'язує. Зауважте також, що джерело apt-get також витягує джерело, де б ви не виконували команду, залишаючи вам * .orig.tar.gz, * .debian.tar.gz, * .dsc та розширений каталог, який я особисто знаходжу бути безладним. Краса організації незабаром, обіцяю.
Введіть версію chroot, ефемер
schroot -c quantal-armhf
vs.
ptest quantal-armhf
вердикт: невеликий край для pbuild , менше символів для набору - менше символів. Зауважте, що в цій версії введення Chroot всі зміни, які ви внесите тут, втрачаються, коли ви виходите з chroot. Також зауважте, що в schroot ви залишаєтесь звичайним користувачем, тоді як з ptest ви будете chroot як root користувач.
Введіть chroot, збережіть версію змін
sudo schroot -c quantal-armhf-source -u root
vs.
ptest quantal-armhf --save
Вердикт: незначна грань для pbuild , менша кількість символів та інтуїтивніші аргументи командного рядка, на мою думку. У цій версії введення chroot будь-які внесені в них зміни будуть збережені для майбутніх викликів.
Створіть пакет в межах 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
вердикт: pbuild , зараз ми бачимо першу значну виграш при використанні конвенцій pbuild. Це мертва проста команда, що нічого більше не потрібно пам’ятати, а саме із зазначенням архітектури, назви chroot та вимагає шляху до файлу * .dsc, який вимагає побудова. Крім того, ви повинні пам'ятати, щоб створити новий * .dsc файл з sbuild, тоді як pbuild зробить це автоматично для вас.
Зробіть той же пакет у chroot, вдруге
У наведеному вище прикладі і sbuild, і pbuild завантажують та встановлюють збірники у відповідних хроніках. Однак pbuild зберігає завантажені файли .deb у / var, тому якщо ви вдруге викликаєте pbuild, вам не доведеться знову завантажувати всі збірники (хоча вони все-таки повинні бути встановлені в chroot). sbuild не кешує файли .deb (принаймні, не за замовчуванням), а отже, ви повинні знову завантажити всі збірники, крім того, щоб чекати їх встановлення в chroot.
вирок: pbuild дальним пострілом. Кешування збірок-deps - це чудова настройка за замовчуванням, і pbuild досить розумний, щоб виявити, чи є в архіві новіша версія збірки-деп, і при необхідності зніме нову версію. Для складного пакету з багатьма складами, ця проста настройка врятує вам хвилини вашого життя.
Підсумок
Я не знаю, що сценарії pbuilder є набагато привітнішими та швидшими, ніж еквіваленти sbuild. Звичайно, є способи зробити pbuilder ще швидшим (побудувати в tmpfs, відключити деякі гачки chroot), і, мабуть, є такі ж хитрощі для sbuild, але я про них не знаю.
Сподіваюсь, це допомагає.
sbuild
, що використовується для створення пакетів Ubuntu, навіть незважаючи на те, що запуск (з того, що я розумію) працюєpbuilder
...