Next: Preparación para usar los binarios del lanzamiento inicial, Up: Lanzamiento inicial [Contents][Index]
Guix—al igual que otras distribuciones de GNU/Linux—se lanza inicialmente desde un conjunto de binarios de manera tradicional: un shell Bourne, herramientas de línea de órdenes que proporcionan GNU Coreutils, Awk, Findutils, ‘sed’ y ‘grep’ y Guile, GCC, Binutils y la biblioteca de C de GNU (see Lanzamiento inicial). Habitualmente dichos binarios se “dan por hecho”.
El dar por hecho estos binarios significa que consideramos que son una “semilla” correcta y fiable para la construcción del sistema completo. En esta asunción yace un problema: el tamaño combinado de dichos binarios necesarios para el lanzamiento inicial es de alrededor de 250MB (see Bootstrappable Builds in GNU Mes). Auditar o incluso la inspeccionar de dichos binarios es prácticamente imposible.
En i686-linux
y x86_64-linux
, Guix basa su lanzamiento inicial
en una “semilla binaria reducida”48.
El lanzamiento inicial basado en la semilla binaria reducida elimina las
herramientas más críticas—desde una perspectiva de confianza—de los
binarios del lanzamiento inicial: GCC, Binutils y la biblioteca de C de GNU
se sustituyen por: bootstrap-mescc-tools
(un pequeño ensamblador y
enlazador) y bootstrap-mes
(un pequeño intérprete de Scheme, un
compilador de C escrito en Scheme y la biblioteca de C de Mes, construida
para TinyCC y para GCC).
Mediante el uso de estas nuevas semillas binarias, los paquetes Binutils, GCC, y la biblioteca de C de GNU “que faltan” se construyen desde las fuentes. De aquí en adelante se prosigue con el proceso del lanzamiento inicial más tradicional. Esta aproximación redujo el tamaño de los binarios del lanzamiento inicial a cerca de 145MB en la versión 1.1 de Guix.
El siguiente paso que Guix ha tomado es sustituir el intérprete de órdenes y sus utilidades con implementaciones en el dialecto Guile de Scheme, el lanzamiento inicial basado únicamente en Scheme. Gash (see Gash in The Gash manual) es un intérprete de órdenes compatible con POSIX que sustituye a Bash, y viene con Gash Utils que contiene reemplazos minimalistas de Awk, las GNU Core Utilities, Grep, Gzip, Sed y Tar. El resto de semillas binarias del lanzamiento inicial que se han eliminado se construyen ahora desde las fuentes.
Building the GNU System from source is currently only possible by adding
some historical GNU packages as intermediate steps49. As Gash and Gash Utils mature, and
GNU packages become more bootstrappable again (e.g., new releases of GNU Sed
will also ship as gzipped tarballs again, as alternative to the hard to
bootstrap xz
-compression), this set of added packages can hopefully
be reduced again.
A continuación se encuentra el grafo de dependencias generado para
gcc-core-mesboot0
, el compilador del lanzamiento inicial usado para
el lanzamiento inicial tradicional del resto del sistema Guix.
The only significant binary bootstrap seeds that remain50 are a Scheme interpreter and a Scheme compiler: GNU Mes and GNU Guile51.
Esta reducción adicional ha llevado el tamaño de la semilla de binarios
inicial a cerca de los 60MB para i686-linux
y x86_64-linux
.
Se está trabajando en eliminar todos los binarios de nuestra pila de
software libre del lanzamiento inicial, en pos de un lanzamiento inicial
basado completamente en fuentes. También se está trabajando en proporcionar
estos lanzamientos iniciales a las arquitecturas arm-linux
y
aarch64-linux
y a Hurd.
Si tiene interés, puede unirse a ‘#bootstrappable’ en la red de IRC de Freenode o participar en las discusiones a través de bug-mes@gnu.org o gash-devel@nongnu.org.
Nos gustaría decir: “lanzamiento inicial completamente desde las fuentes” pero, aunque estamos trabajando por alcanzar ese objetivo, sería una hipérbole usar dicho término para describir el proceso que seguimos en la actualidad.
Packages such as
gcc-2.95.3
, binutils-2.14
, glibc-2.2.5
,
gzip-1.2.4
, tar-1.22
, and some others. For details, see
gnu/packages/commencement.scm.
Ignoring
the 68KB mescc-tools
; that will be removed later, together with
mes
.
Not shown in this graph are the static binaries for
bash, tar
, and xz
that are used to get Guile running.