Всегда опасно не соглашаться с Emmet, поэтому позвольте мне начать с признания того, что его ответ, вероятно, более правильный. Тем не менее, я лично считаю pbuilder более удобным и более эффективным из коробки.
Если вы находитесь на Ubuntu 12.10 или новее, обязательно установите отличные скрипты pbuilder, которые представляют собой набор чрезвычайно
Если вы используете Ubuntu 12.04, вы можете установить скрипты pbuilder из хранилища backports.
Теперь давайте сравним и сравним удобство использования эквивалента операции. В этих примерах я пройдусь с помощью ARM chroot, размещенного на x86, но концепции по-прежнему применяются к x86 chroot, размещенному на x86. Помните, что я использую оболочки pbuilder-scripts.
Следует отметить, что скрипты pbuilder реализуют немного соглашения, аналогично тому, как Ruby on Rails принимает некоторые решения для вас, чтобы вы могли быстро и быстро.
extreme
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
вердикт: tie, обе командные строки довольно просты, и в случае необходимости оба могут взять дополнительные опции для более удобных вариантов использования. Однако обратите внимание на дополнительный новый каталог, созданный pcreate.
tie
# 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
verdict : небольшой край для sbuild, потому что вы используете стандартную дебианскую / ubuntu передовую практику. Соглашение, используемое pget, может показаться странным сначала, но поскольку я работаю над несколькими пакетами через несколько выпусков Ubuntu, мне нравится организация, которую она налагает. Обратите внимание также, что apt-get source также извлекает источник везде, где вы запускаете команду, оставляя вас с * .orig.tar.gz, * .debian.tar.gz, * .dsc и расширенным каталогом, который я лично считаю быть грязным.
Маленькое ребро для sbuild
schroot -c quantal-armhf
vs.
ptest quantal-armhf
verdict: небольшое преимущество для pbuild, меньшее количество символов для ввода - меньшее количество символов. Обратите внимание, что в этой версии ввода chroot любые изменения, которые вы делаете здесь, будут потеряны после выхода из chroot. Также обратите внимание, что в schroot вы останетесь обычным пользователем, тогда как с ptest вы будете в chroot как пользователь root.
небольшое ребро для pbuild
[ f7]vs.
ptest quantal-armhf --save
verdict: небольшое ребро для pbuild, меньшее количество символов и более интуитивные аргументы командной строки, на мой взгляд. В этой версии ввода chroot любые изменения, которые вы там вносите, будут сохранены для будущих вызовов.
небольшое ребро для pbuild
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
verdict: pbuild, теперь мы видим первую значительную победу при использовании соглашений pbuild. Это мертвая простая команда, в которой ничего не нужно помнить, в отличие от указания архитектуры, имени chroot и необходимости в пути к файлу * .dsc, который требуется sbuild. Кроме того, вы должны помнить о создании нового файла * .dsc с sbuild, тогда как pbuild сделает это автоматически для вас.
pbuild
В приведенном выше примере , как sbuild, так и pbuild будут загружать и устанавливать build-deps в соответствующие chroots. Однако pbuild сохраняет загруженные файлы .deb в / var, поэтому, если вы повторно вызываете pbuild во второй раз, вам не нужно снова загружать все сборки (хотя они все равно должны быть установлены в chroot). sbuild не кэширует файлы .deb (по крайней мере, не по умолчанию), и, следовательно, вы должны снова загрузить все сборки-фрагменты в дополнение к ожиданию их установки в chroot.
verdict: pbuild длинным выстрелом. Кэширование build-deps - отличный параметр по умолчанию, а pbuild достаточно умен, чтобы определить, есть ли в архиве более новая версия build-dep и при необходимости вытащить новую версию.
pbuild
Из-за квадрата я нахожу, что для сложного пакета с множеством копий вы можете сохранить ваши минуты. pbuilder-скрипты будут намного дружелюбнее и быстрее, чем эквиваленты sbuild. Конечно, есть способы сделать pbuilder еще быстрее (построить в tmpfs, отключить некоторые крючки chroot), и, вероятно, есть и те же самые трюки для sbuild, но я не знаю о них.
[d40 ] Надеюсь, это поможет.Когда вы говорите, USB-кабель, вы имеете в виду кабель передачи Windows Easy?
В этом случае самый простой способ сделать это - просто подключить две машины непосредственно вместе с кабелем Ethernet. Современные сетевые адаптеры достаточно умны, что вам даже не нужен кроссоверный кабель; они просто автоматически пересекаются, когда обнаруживают, что вы подключили два компьютера.
Firewire также может быть вариантом. https://help.ubuntu.com/community/EthernetOverFirewire
Если на ваших компьютерах есть разъем типа B или On-Go, вы можете использовать драйвер USB-гаджета. Для загрузки драйвера
# modprobe g_ether
Вы можете настроить MAC-адреса и идентификаторы поставщиков и продуктов:
# modinfo g_ether
filename: /lib/modules/version/kernel/drivers/usb/gadget/legacy/g_ether.ko
license: GPL
author: David Brownell, Benedikt Spanger
description: RNDIS/Ethernet Gadget
srcversion: 5E4C828D24F6E477C9CB5EE
depends: libcomposite,u_ether,usb_f_rndis
intree: Y
vermagic: version SMP mod_unload modversions
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: qmult:queue length multiplier at high/super speed (uint)
parm: dev_addr:Device Ethernet Address (charp)
parm: host_addr:Host Ethernet Address (charp)
parm: use_eem:use CDC EEM mode (bool)
Вы можете установить параметры модуля при загрузке драйвера, передав их после имя модуля:
# modprobe g_ether host_addr=00:dc:c8:f7:75:05 dev_addr=00:dd:dc:eb:6d:f1
Если ни одна из ваших машин не поддерживает работу в качестве USB-устройства, этот подход не будет работать.
Внимание: НЕ пытайтесь подключить два типа USB- Разъемы. В лучшем случае вы можете повредить материнские платы. В худшем случае вы можете начать огонь.
Если вам абсолютно необходимо это сделать для доказательства концепции, вы можете имитировать древнее искусство переноса «laplink», эмулируя последовательный порт на каждой машине.
Usb to serial on one и usb к серийному (нуль-модем) в другом, сортируя гендерные проблемы в середине.
Это было бы не быстро.
Когда вы говорите, USB-кабель, вы имеете в виду кабель передачи Windows Easy?
В этом случае самый простой способ сделать это - просто подключить две машины непосредственно вместе с кабелем Ethernet. Современные сетевые адаптеры достаточно умны, что вам даже не нужен кроссоверный кабель; они просто автоматически пересекаются, когда обнаруживают, что вы подключили два компьютера.
Firewire также может быть вариантом. https://help.ubuntu.com/community/EthernetOverFirewire
Если на ваших компьютерах есть разъем типа B или On-Go, вы можете использовать драйвер USB-гаджета. Для загрузки драйвера
# modprobe g_ether
Вы можете настроить MAC-адреса и идентификаторы поставщиков и продуктов:
# modinfo g_ether
filename: /lib/modules/version/kernel/drivers/usb/gadget/legacy/g_ether.ko
license: GPL
author: David Brownell, Benedikt Spanger
description: RNDIS/Ethernet Gadget
srcversion: 5E4C828D24F6E477C9CB5EE
depends: libcomposite,u_ether,usb_f_rndis
intree: Y
vermagic: version SMP mod_unload modversions
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: qmult:queue length multiplier at high/super speed (uint)
parm: dev_addr:Device Ethernet Address (charp)
parm: host_addr:Host Ethernet Address (charp)
parm: use_eem:use CDC EEM mode (bool)
Вы можете установить параметры модуля при загрузке драйвера, передав их после имя модуля:
# modprobe g_ether host_addr=00:dc:c8:f7:75:05 dev_addr=00:dd:dc:eb:6d:f1
Если ни одна из ваших машин не поддерживает работу в качестве USB-устройства, этот подход не будет работать.
Внимание: НЕ пытайтесь подключить два типа USB- Разъемы. В лучшем случае вы можете повредить материнские платы. В худшем случае вы можете начать огонь.
Если вам абсолютно необходимо это сделать для доказательства концепции, вы можете имитировать древнее искусство переноса «laplink», эмулируя последовательный порт на каждой машине.
Usb to serial on one и usb к серийному (нуль-модем) в другом, сортируя гендерные проблемы в середине.
Это было бы не быстро.
Когда вы говорите, USB-кабель, вы имеете в виду кабель передачи Windows Easy?
В этом случае самый простой способ сделать это - просто подключить две машины непосредственно вместе с кабелем Ethernet. Современные сетевые адаптеры достаточно умны, что вам даже не нужен кроссоверный кабель; они просто автоматически пересекаются, когда обнаруживают, что вы подключили два компьютера.
Firewire также может быть вариантом. https://help.ubuntu.com/community/EthernetOverFirewire
Если на ваших компьютерах есть разъем типа B или On-Go, вы можете использовать драйвер USB-гаджета. Для загрузки драйвера
# modprobe g_ether
Вы можете настроить MAC-адреса и идентификаторы поставщиков и продуктов:
# modinfo g_ether
filename: /lib/modules/version/kernel/drivers/usb/gadget/legacy/g_ether.ko
license: GPL
author: David Brownell, Benedikt Spanger
description: RNDIS/Ethernet Gadget
srcversion: 5E4C828D24F6E477C9CB5EE
depends: libcomposite,u_ether,usb_f_rndis
intree: Y
vermagic: version SMP mod_unload modversions
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: qmult:queue length multiplier at high/super speed (uint)
parm: dev_addr:Device Ethernet Address (charp)
parm: host_addr:Host Ethernet Address (charp)
parm: use_eem:use CDC EEM mode (bool)
Вы можете установить параметры модуля при загрузке драйвера, передав их после имя модуля:
# modprobe g_ether host_addr=00:dc:c8:f7:75:05 dev_addr=00:dd:dc:eb:6d:f1
Если ни одна из ваших машин не поддерживает работу в качестве USB-устройства, этот подход не будет работать.
Внимание: НЕ пытайтесь подключить два типа USB- Разъемы. В лучшем случае вы можете повредить материнские платы. В худшем случае вы можете начать огонь.
Если вам абсолютно необходимо это сделать для доказательства концепции, вы можете имитировать древнее искусство переноса «laplink», эмулируя последовательный порт на каждой машине.
Usb to serial on one и usb к серийному (нуль-модем) в другом, сортируя гендерные проблемы в середине.
Это было бы не быстро.
Когда вы говорите, USB-кабель, вы имеете в виду кабель передачи Windows Easy?
В этом случае самый простой способ сделать это - просто подключить две машины непосредственно вместе с кабелем Ethernet. Современные сетевые адаптеры достаточно умны, что вам даже не нужен кроссоверный кабель; они просто автоматически пересекаются, когда обнаруживают, что вы подключили два компьютера.
Firewire также может быть вариантом. https://help.ubuntu.com/community/EthernetOverFirewire
Если на ваших компьютерах есть разъем типа B или On-Go, вы можете использовать драйвер USB-гаджета. Для загрузки драйвера
# modprobe g_ether
Вы можете настроить MAC-адреса и идентификаторы поставщиков и продуктов:
# modinfo g_ether
filename: /lib/modules/version/kernel/drivers/usb/gadget/legacy/g_ether.ko
license: GPL
author: David Brownell, Benedikt Spanger
description: RNDIS/Ethernet Gadget
srcversion: 5E4C828D24F6E477C9CB5EE
depends: libcomposite,u_ether,usb_f_rndis
intree: Y
vermagic: version SMP mod_unload modversions
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: qmult:queue length multiplier at high/super speed (uint)
parm: dev_addr:Device Ethernet Address (charp)
parm: host_addr:Host Ethernet Address (charp)
parm: use_eem:use CDC EEM mode (bool)
Вы можете установить параметры модуля при загрузке драйвера, передав их после имя модуля:
# modprobe g_ether host_addr=00:dc:c8:f7:75:05 dev_addr=00:dd:dc:eb:6d:f1
Если ни одна из ваших машин не поддерживает работу в качестве USB-устройства, этот подход не будет работать.
Внимание: НЕ пытайтесь подключить два типа USB- Разъемы. В лучшем случае вы можете повредить материнские платы. В худшем случае вы можете начать огонь.
Если вам абсолютно необходимо это сделать для доказательства концепции, вы можете имитировать древнее искусство переноса «laplink», эмулируя последовательный порт на каждой машине.
Usb to serial on one и usb к серийному (нуль-модем) в другом, сортируя гендерные проблемы в середине.
Это было бы не быстро.