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 XFree86™3.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.
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 24,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:
#
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>.