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.
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:
CHROOTDIR - El directorio que se utiliza para el entorno de chroot durante la construcción de la release entera.
BUILDNAME - El nombre de la release que se va a construir.
CVSROOT - La ubicación del repositorio de CVS.
RELEASETAG - La etiqueta CVS correspondiente con la release que se quiere construir.
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.
Creación de un entorno de sistema limpio en una jerarquía de directorios separada utilizando “make installworld”.
Comprobación de la correcta versión de los ficheros fuentes almacenados en la jerarquía de directorios recién creada, junto con el chequeo de la documentación y de los ports utilizando, todo ello a través de CVS.
Relleno de los directorios /etc y /dev dentro del entorno chroot.
Creación de un “chroot” dentro de la jerarquía de directorios creada, para que resulte más dificil que el entorno de la máquina se vea contaminado por la construcción de la release.
make world dentro del entorno de chroot.
Contrucción de los binarios relacionados con Kerberos.
Construcción del kernel GENERIC.
Creación de un esqueleto del árbol de directorios donde se construirán y empaquetarán las distribuciones binarias.
Construcción e instalación del conjunto de herramientas de documentación necesarias para convertir los fuentes de la documentación (SGML) en los documentos HTML y de texto que pasarán a formar parte de la release.
Construcción e instalación de la documentación real (manuales de usuario, tutoriales, release notes, listas de compatibilidad de hardware, etc.)
Construcción de los “decisivos” binarios utilizados en los disquetes de instalación.
Colocación adecuada de los de los paquetes de distribución de binarios y de fuentes.
Creación del medio de arranque y del disquete “fixit” o salvamento.
Creación de la jerarquía de directorios de instalación por FTP.
Creación de imágenes ISO para CDROM/DVD(opcional).
Para más información sobre la infraestructura involucrada en el proceso de construcción de la release, el lector puede consultar release(7).
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.
Note: 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.
La colección de FreeBSD
Ports está compuesta por más de 20,000 paquetes de software de terceras
partes que se encuentran disponibles para FreeBSD. El Grupo de administración de
ports <portmgr@FreeBSD.org>
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.
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.
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.
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.
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>.