3. Construcción de la Release

Cualquier persona dueña de una potente máquina y con acceso de lectura al repositorio de código fuente puede “construir” las “releases” de FreeBSD. En la práctica esto significa que cualquiera puede generar el proceso de construcción de releases, ya que, como se comentó con anterioridad, FreeBSD ofrece acceso CVS anónimo a todo el mundo (consulte el Handbook para más detalles). El único requisito imprescindible para realizar este proceso es la existencia del dispositivo vn(4). (En -CURRENT, este dispositivo ha sido reemplazado por el nuevo driver de discos en memoria denominado md(4).) Si el dispositivo no se encuentra cargado en el kernel, debería cargarse automáticamente al ejecutar el comando vnconfig(8) como parte de la fase de creación del medio de arranque. Todas las herramientas necesarias para construir la release se encuentran disponibles en el repositorio de CVS dentro del directorio src/release. Estas herramientas proporcionan una forma consistente y robusta de construir releases de FreeBSD. Una release completa se puede construir utilizando un único comando, incluyendo la creación de las imágenes ISO necesarias para realizar copias en CDROM, junto con disquetes de instalación y un directorio para la instalación por FTP. Este comando fue adecuadamente bautizado como make release.

3.1. make release

Para poder construir la releases de una forma exitosa se debe rellenar primero el directorio /usr/obj ejecutando el comando make world o simplemente make buildworld. El target release que utiliza el comando make necesita varias variables, tal como se muestra a continuación:

Si no se dispone de acceso a un repositorio de CVS local, se puede realizar una copia espejo (un mirror) con CVSup. El fichero /usr/share/examples/cvsup/cvs-supfile, sirve como buen punto de partida para realizar un mirror del repositorio de CVS.

Si se omite RELEASETAG, la release se construirá a partir de la rama HEAD (también conocida como -CURRENT). Las releases que se construyen desde el principio se conocen normalmente con el nombre de “-CURRENT snapshots”.

Existen otras variables que se pueden editar para adaptar el proceso de construcción de la release. La mayoría de estas variables se encuentran documentadas al comienzo de src/release/Makefile. El comando exacto para contruir la release oficial de FreeBSD 4.7 (x86) fue:

make release CHROOTDIR=/local3/release \
       BUILDNAME=4.7-RELEASE \
       CVSROOT=/host/cvs/usr/home/ncvs \
       RELEASETAG=RELENG_4_7_0_RELEASE
       
    

El Makefile de la release se puede dividir en varios pasos distintos.

Para más información sobre la infraestructura involucrada en el proceso de construcción de la release, el lector puede consultar release(7).

3.2. Construcción deXFree86

XFree86 es un componente importante para muchos usuarios de entornos gráficos. Antes de la release FreeBSD 4.6 las se usaba XFree863.X por defecto. La forma más sencilla de construir estas versiones consiste en utilizar el script src/release/scripts/X11/build_x.sh. Este script requiere que XFree86 y Tcl/Tk se encuentren instalados previamente en la máquina donde se realiza la construcción. Después de compilar los servidores X necesarios, el script empaqueta todos los ficheros en “tarballs” que sysinstall(8) sabe cómo localizar utilizando el directorio XF86336 del medio de instalación.

A partir de FreeBSD 4.6, sysinstall(8) instala XFree86 4.X por defecto, como cualquier otro conjunto de paquetes. Estos paquetes se pueden construir a partir del “package-building cluster” o a partir de las etiquetas del árbol de ports adecuadas.

Nota: Es importante borrar cualquier configuración particular almacenada en /etc/make.conf. Por ejemplo, no sería una idea muy inteligente distribuir binarios que se construyeron en un sistema con la variable CPUTYPE asignada a un determinado procesador.

3.3. Software Contribuido (“ports”)

La colección de FreeBSD Ports está compuesta por más de 24,000 paquetes de software de terceras partes que se encuentran disponibles para FreeBSD. El Grupo de administración de ports se responsabiliza de mantener un árbol de ports consistente que se pueda utilizar para crear paquetes binarios, los cuales se añaden a las releases oficiales de FreeBSD.

Las actividades de ingeniería de releases para nuestra colección de paquetes software de terceras partes se encuentra más allá del objetivo de este documento. Otro artículo, http://www.freebsd.org/doc/en_US.ISO8859-1/articles/releng-packages/, cubre este tema en profundidad.

3.4. ISOs de la release

A partir de FreeBSD 4.4, el Proyecto FreeBSD decidió lanzar gratuitamente al público las cuatro imágenes ISO que anteriormente se vendían en BSDi/Wind River Systems/FreeBSD Mall como distribuciones en CDROM “oficiales”. Cada uno de los cuatro discos debe contener un README.TXT que explica el contenido de cada disco, un CDROM.INF que proporciona metadatos para que sysinstall(8) pueda validar la información en él contenida y un filename.txt que proporciona un “manifiesto”. Este manifiesto se puede crear utilizando un simple comando:

/stage/cdrom# find . -type f | sed -e 's/^\.\///' | sort > filename.txt

Los requisitos concretos de cada CD se resumen a continuación.

3.4.1. Disco 1

El primer disco se crea casi en su totalidad a partir del comando make release. Los únicos cambios que se deben realizar dentro del directorio disc1 son la adición de un directorio tools, de XFree86 y de los paquetes de terceras partes más populares que quepan dentro del espacio remanente de dicho primer disco. El directorio tools contiene el software que permite a los usuarios crear disquetes de instalación desde otros sistemas operativos. Este disco debe crearse como autoarrancable para que los usuarios de PCs modernos no necesiten crear disquetes de arranque y puedan utilizar la característica de autoarranque desde CD.

Si se proporciona una versión alternativa de XFree86, sysinstall(8) debe actualizarse para reflejar la nueva localización y las instrucciones de instalación. El código relevante se encuentra en src/release/sysinstall en -STABLE o en src/usr.sbin/sysinstall en -CURRENT. Específicamente, se deben actualizar dist.c, menus.c y config.c.

3.4.2. Disco 2

El segundo disco se crea en su mayor parte a partir del comando make release. Este disco contiene un “sistema de ficheros vivo”, que se puede utilizar a partir de sysinstall(8) para resolver problemas durante el proceso de instalación de FreeBSD. Este disco se debe construir como autoarrancable y debe contener una copia comprimida del repositorio de CVS dentro del directorio CVSROOT, junto con demostraciones de software comercial localizadas dentro del directorio commerce.

3.4.3. Discos 3 and 4

Los dos discos que quedan contienen paquetes de software para FreeBSD. Estos paquetes deben agruparse de tal forma que un paquete y todas sus dependencias quepan en el mismo disco. Se puede obtener más información sobre la creación de estos discos en el artículo http://www.freebsd.org/doc/en_US.ISO8859-1/articles/releng-packages/ .

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.