Siempre es peligroso estar en desacuerdo con Emmet, así que déjame comenzar reconociendo que su respuesta es probablemente más correcta. Sin embargo, personalmente considero que pbuilder es más fácil de usar y más eficiente desde el primer momento.
Si está en Ubuntu 12.10 o posterior, asegúrese de instalar los excelentes scripts de pbuilder, que son un conjunto de envoltorios extremadamente amigables alrededor de pbuilder sin procesar.
Si está en Ubuntu 12.04, puede instalar los scripts de pbuilder desde el repositorio de backports.
Ahora, comparemos y contrastemos la facilidad de uso de las operaciones equivalentes. En estos ejemplos, explicaré cómo usar un chroot ARM alojado en x86, pero los conceptos aún se aplican a un chroot x86 alojado en x86 también. Recuerde, estoy usando los envoltorios de scripts pbuilder.
Una cosa a tener en cuenta es que los scripts pbuilder implementan un poco de convención, similar a cómo Ruby on Rails toma algunas decisiones por usted para que pueda comenzar rápidamente. Trataré de señalarlos a medida que avanzamos.
Crea un 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
veredicto: empate , ambas líneas de comando son bastante simples, y ambas pueden tomar opciones adicionales para casos de uso más sofisticados si es necesario. Sin embargo, tenga en cuenta el nuevo directorio adicional creado por pcreate.
Descargar un paquete fuente
# 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
veredicto: leve ventaja para sbuild , porque está utilizando las mejores prácticas estándar de debian / ubuntu. La convención utilizada por pget puede parecer extraña al principio, pero como trabajo en varios paquetes en múltiples versiones de Ubuntu, me gusta la organización que impone. Tenga en cuenta también que apt-get source también extrae la fuente donde sea que ejecute el comando, dejándolo con * .orig.tar.gz, * .debian.tar.gz, * .dsc y el directorio expandido, que personalmente encuentro para se desordenado La belleza de la organización llegará pronto, lo prometo.
Ingrese el chroot, versión efímera
schroot -c quantal-armhf
vs.
ptest quantal-armhf
veredicto: ligera ventaja para pbuild , menos caracteres para escribir son menos caracteres. Tenga en cuenta que en esta versión de ingresar al chroot, cualquier cambio que haga aquí se perderá una vez que salga del chroot. También tenga en cuenta que en schroot, seguirá siendo un usuario normal, mientras que con ptest, estará en el chroot como usuario root.
Ingrese el chroot, guarde la versión de cambios
sudo schroot -c quantal-armhf-source -u root
vs.
ptest quantal-armhf --save
veredicto: ligera ventaja para pbuild , menos caracteres y argumentos de línea de comando más intuitivos, en mi opinión. En esta versión de ingresar al chroot, cualquier cambio que realice allí se guardará para futuras invocaciones.
Construye un paquete dentro del 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
veredicto: pbuild , ahora vemos la primera victoria significativa al usar las convenciones de pbuild. Este es un comando muy simple sin nada más que recordar, en lugar de especificar la arquitectura, el nombre de chroot y requerir una ruta a un archivo * .dsc que requiere sbuild. Además, debe recordar generar un nuevo archivo * .dsc con sbuild, mientras que pbuild lo hará automáticamente por usted.
Construye el mismo paquete en chroot, una segunda vez
En el ejemplo anterior, tanto sbuild como pbuild descargarán e instalarán los build-deps en sus respectivos chroots. Sin embargo, pbuild guarda los archivos .deb descargados en / var, por lo que si invoca pbuild por segunda vez, no tiene que descargar todos los build-deps nuevamente (aunque todavía deben instalarse en el chroot). sbuild no almacena en caché los archivos .deb (al menos no de manera predeterminada) y, por lo tanto, debe descargar todos los build-deps nuevamente además de esperar a que se instalen en el chroot.
veredicto: pbuild por una posibilidad remota . El almacenamiento en caché de los build-deps es una excelente configuración predeterminada, y pbuild es lo suficientemente inteligente como para detectar si hay una versión más nueva de un build-dep en el archivo y desplegará la nueva versión si es necesario. Para un paquete complejo con muchas estructuras de construcción, esta configuración simple le ahorrará minutos de su vida.
Resumen
Fuera de la caja, encuentro que los scripts de pbuilder son mucho más amigables y rápidos que los equivalentes de sbuild. Por supuesto, hay formas de hacer que pbuilder sea aún más rápido (compilar en un tmpfs, deshabilitar algunos de los ganchos chroot), y probablemente también haya los mismos trucos para sbuild, pero no estoy al tanto de ellos.
Espero que esto ayude.
sbuild
se usa para crear los paquetes de Ubuntu a pesar de que launchpad (por lo que entiendo) se ejecutapbuilder
...