-
Notifications
You must be signed in to change notification settings - Fork 1
receta_cowdancer
COWdancer (Copy-On-Write) es una especie de 'unionfs' implementado con hardlinks.
Este nos permitirá de manera sencilla tener por ejemplo, un debootstrap de un sistema para usarlo como entorno enjaulado base y no mutable sobre el que aplicaremos cambios (instalación de depends) para la compilación de paquetes y una vez terminada esta, los cambios se borrarán sin más y nos quedará el entorno base limpio de nuevo. Para esto, usaremos además pbuilder, que tomará con base nuestro cowchroot en vez del habitual por defecto tar.gz que tiene que descomprimir cada vez que se quiere usar, con la consiguiente perdida de tiempo. Pbuilder trae un script llamado pdebuild que es un wrapper para debuild que usa pbuilder por debajo para compilar los paquetes a partir del directorio source de un paquete debian corriente. A su vez, en esta receta, configuramos pdebuild para que use otro wrapper del paquete cowdancer, que es cowbuilder. Este compilará el paquete en el cowchroot.
A continuación podéis encontrar una receta para montar un entorno de compilación en un path fuera del de por defecto, lo cual fue necesario para nosotros.
Para un entorno completo de compilación de paquetes (no solo para cowdancer) necesitaríamos instalar los siguientes paquetes:
sudo apt-get install build-essential fakeroot devscripts debhelper cdbs pbuilder cowdancer
Crear entorno de construcción de paquetes fuera de los paths por defecto:
cowbuilder --create --distribution jaunty --basepath /var/gensys/cowbuilder/base-test.cow
Construir un paquete al debuild style usando pbuilder en el entorno cowdancer:
- Establecer comportamiento por defecto de pdebuild para usar cowbuilder. En /etc/pbuilderrc añadir al final:
# default use of cowbuilder for pdebuild
PDEBUILD_PBUILDER=cowbuilder
- Construir (desde el directorio source de un paquete debian):
pdebuild -- --basepath /var/gensys/cowbuilder/base-test.cow/
pdebuild hace primeramente un debclean en el directorio de los sources que vas a compilar, así que si el paquete que vamos a compilar hace uso de macros provistas por 'cdbs', 'deblhelper' o 'mozilla-devscripts' para hacer el clean, no nos funcionará si no instalamos en nuestra sistema estos paquetes.
Pongo aquí el fichero de configuración de pbuilder de la máquina de generación Gv6:
# this is your configuration file for pbuilder.
# the file in /usr/share/pbuilder/pbuilderrc is the default template.
# /etc/pbuilderrc is the one meant for editing.
#
# read pbuilderrc.5 document for notes on specific options.
BASETGZ=/var/gensys/pbuilder/base.tgz
#EXTRAPACKAGES=gcc3.0-athlon-builder
#export DEBIAN_BUILDARCH=athlon
BUILDPLACE=/var/gensys/pbuilder/build/
MIRRORSITE=http://v5.guadalinex.org/ubuntu
#OTHERMIRROR="deb http://www.home.com/updates/ ./"
#export http_proxy=http://your-proxy:8080/
USEPROC=yes
USEDEVPTS=yes
USEDEVFS=no
BUILDRESULT=/var/gensys/deb-repositories/gv6
# specifying the distribution forces the distribution on "pbuilder update"
DISTRIBUTION=jaunty
# specifying the components of the distribution (default is "main")
COMPONENTS="main restricted universe multiverse"
#specify the cache for APT
APTCACHE="/var/gensys/pbuilder/aptcache/"
APTCACHEHARDLINK="yes"
REMOVEPACKAGES="lilo"
#HOOKDIR="/usr/lib/pbuilder/hooks"
HOOKDIR=""
# make debconf not interact with user
export DEBIAN_FRONTEND="noninteractive"
DEBEMAIL=""
# for pbuilder debuild (sudo -E keeps the environment as-is)
BUILDSOURCEROOTCMD="fakeroot"
PBUILDERROOTCMD="sudo -E"
# command to satisfy build-dependencies; the default is an internal shell
# implementation which is relatively slow; there are two alternate
# implementations, the "experimental" implementation,
# "pbuilder-satisfydepends-experimental", which might be useful to pull
# packages from experimental or from repositories with a low APT Pin Priority,
# and the "aptitude" implementation, which will resolve build-dependencies and
# build-conflicts with aptitude which helps dealing with complex cases but does
# not support unsigned APT repositories
PBUILDERSATISFYDEPENDSCMD="/usr/lib/pbuilder/pbuilder-satisfydepends"
#Command-line option passed on to dpkg-buildpackage.
#DEBBUILDOPTS="-IXXX -iXXX"
DEBBUILDOPTS=""
#APT configuration files directory
APTCONFDIR=""
# the username and ID used by pbuilder, inside chroot. Needs fakeroot, really
BUILDUSERID=1234
BUILDUSERNAME=pbuilder
# BINDMOUNTS is a space separated list of things to mount
# inside the chroot.
BINDMOUNTS=""
# Set the debootstrap variant to 'buildd' type.
# DEBOOTSTRAPOPTS[0]='--variant=buildd'
# or work around bug in debootstrap 3.0.0 (314858)
unset DEBOOTSTRAPOPTS
# Set the PATH I am going to use inside pbuilder: default is "/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
# SHELL variable is used inside pbuilder by commands like 'su'; and they need sane values
export SHELL=/bin/bash
# The name of debootstrap command.
DEBOOTSTRAP="debootstrap"
# default file extension for pkgname-logfile
PKGNAME_LOGFILE_EXTENTION="_$(dpkg --print-architecture).build"
# default PKGNAME_LOGFILE
PKGNAME_LOGFILE=""
# default use of cowbuilder for pdebuild
PDEBUILD_PBUILDER=cowbuilder
- Inicio
-
Manual
- PRESENTACIÓN
- Conoce el Software Libre
- ¿Cómo surgió Guadalinex?
- ¿Cómo instalo mi Guadalinex V.6?
- ¿Cómo doy un paseo por el escritorio?
- ¿Cómo pongo el sistema a mi gusto?
- Todos nuestros usuarios cuentan. Accesibilidad
- ¿Cómo manejo y organizo mis archivos y carpetas?
- ¿Cómo sé quién es el administrador del sistema y quiénes son los usuarios?
- Qué de cosas puedo hacer!!!!!
- ¿Cómo añado y quito programas?
- Novedades de la V.6
- Para los que quieran más
- FAQs con supuestos prácticos
- Glosario de términos