Siguiente: Preparación para usar los binarios del lanzamiento inicial, Subir: Lanzamiento inicial [Índice general][Índice]
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 (véase 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 (véase Bootstrappable Builds en 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”46.
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 (véase Gash en 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.
La construcción del sistema GNU desde las fuentes es actualmente únicamente
posible añadiendo algunos paquetes históricos de GNU como pasos
intermedios47. Si Gash y sus utilidades maduran, y
los paquetes de GNU vuelven a ser más fáciles de lanzar de manera inicial
(por ejemplo, las nuevas entregas de GNU Sed también incluyen de nuevo
archivadores comprimidos con gzip, como alternativa a la compresión
xz
que es más difícil de lanzar inicialmente), esperemos que este
conjunto agregado de paquetes pueda reducirse más aún otra vez.
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.
La única semilla binaria del lanzamiento inicial que queda48 son un intérprete de Scheme y un compilador de Scheme: GNU Mes y GNU Guile49.
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.
Paquetes como gcc-2.95.3
, binutils-2.14
,
glibc-2.2.5
, gzip-1.2.4
, tar-1.22
, y algunos
otros. Para obtener más detalles véase
gnu/packages/commencement.scm.
Ignorando los 68KB de mescc-tools
; que se eliminará
más adelante, junto a mes
.
En este grafo no se
muestran los binarios estáticos para bash, tar
, y xz
que se usan para hacer que Guile pueda funcionar.
Siguiente: Preparación para usar los binarios del lanzamiento inicial, Subir: Lanzamiento inicial [Índice general][Índice]