El FESCo, la máxima autoridad técnica detrás del desarrollo de Fedora, anuncio hace algunos días un cambio clave que será introducido en versión de otoño de «Fedora 43». Y es que se ha aprobado oficialmente el objetivo de proporcionar compilaciones de paquetes totalmente reproducibles para al menos el 99 % del repositorio.
Actualmente, la cobertura de compilaciones reproducibles en Fedora ya alcanza el 90 %. El 10 % restante se concentra en paquetes que aún requieren intervención por parte de sus mantenedores. Para motivar la resolución de estos casos, se ha decidido que los fallos relacionados con la no repetibilidad de compilaciones serán tratados como errores de compilación, lo que acelerará su corrección.
¿Qué son las compilaciones reproducibles y por qué importan?
Una compilación reproducible garantiza que cualquier persona pueda tomar el código fuente de un paquete y, usando el mismo entorno, producir exactamente el mismo binario que se ofrece. Esto significa que los usuarios pueden reconstruir paquetes RPM y verificar que coincidan con los distribuidos oficialmente, al menos en todos los elementos relevantes del paquete: archivos incluidos, metadatos esenciales, etc. Las únicas diferencias permitidas serán detalles como la marca de tiempo, el nombre del host de compilación o la firma digital.
Con la incorporación de compilaciones reproducibles en Fedora 43, el proyecto da un paso decisivo hacia un modelo de distribución más transparente. Uno de los beneficios más inmediatos y significativos de esta iniciativa es que los usuarios ya no tendrán que confiar ciegamente en la infraestructura de construcción de Fedora. A partir de ahora, cualquier persona podrá verificar que los binarios distribuidos coinciden exactamente con el código fuente publicado, sin alteraciones ocultas ni manipulaciones.
El objetivo del proyecto Fedora es ambicioso pero alcanzable: que al menos el 99 % de los paquetes en su repositorio puedan reconstruirse. Actualmente, la cobertura de reproducibilidad ya ronda el 90 %, lo que evidencia un progreso significativo. Para cubrir ese 10 % restante, será necesaria la colaboración activa de los mantenedores de paquetes.
Como parte del proceso, Fedora comenzará a abrir informes de errores automáticamente cada vez que un paquete falle una prueba de reconstrucción reproducible. Estos informes funcionarán como notificaciones directas para que los mantenedores investiguen las discrepancias y apliquen las correcciones necesarias.
Somos conscientes de algunos problemas que no se pueden solucionar fácilmente:
Los paquetes Haskell no se pueden reproducir al compilarse con más de un subproceso. El equipo de desarrollo está trabajando en el problema ; la próxima versión de ghc podría resolverlo por completo.
Los paquetes mingw tienen datos de depuración irreproducibles.
Los paquetes de golang tienen datos de depuración irreproducibles
El núcleo utiliza una clave efímera para las firmas de los módulos.
Los paquetes firmados para SecureBoot utilizan una clave privada (shim, grub2).
Algunos requisitos de compilación (BuildRequires) en los srpm dependen de la arquitectura.
Esto se debe principalmente a cómo preparamos el entorno para las compilaciones. No afecta directamente a los rpm binarios.
Crearemos un sistema de seguimiento de errores para los problemas que afecten a varios paquetes (Haskell, Mingw, Golang). Esperamos que estos problemas se resuelvan tanto en el desarrollo original como en el desarrollo posterior.
Seguridad y beneficios múltiples
Como tal, se menciona que el lograr una reproducibilidad total va más allá de lo puramente técnico, ya que representan un avance en seguridad permitiendo verificar que el software no ha sido manipulado durante su construcción. Pero además, tienen un impacto tangible en otros aspectos importantes del ciclo de desarrollo.
En términos de control de calidad, el proceso ayuda a detectar errores sutiles en los paquetes. Por ejemplo, si un paquete marcado como «noarch» (independiente de arquitectura) produce binarios diferentes en distintas plataformas, eso puede indicar un mal uso de dependencias específicas de hardware.
Desde el punto de vista del mantenimiento, las compilaciones reproducibles permiten detectar con claridad qué ha cambiado tras una edición menor: solo las diferencias directamente asociadas con esa modificación aparecerán reflejadas en los nuevos binarios, lo que facilita el análisis, la depuración y el control de versiones.
Beneficio para Fedora
Los desarrolladores de Fedora, mencionan que el logro de compilaciones reproducibles implica controlar múltiples factores técnicos, ya que debe garantizarse la consistencia en dependencias, versiones de herramientas de compilación, configuraciones por defecto y el propio orden de los archivos generados. El compilador, además, debe configurarse para no insertar valores volátiles como rutas absolutas, marcas de tiempo o datos aleatorios. También es esencial evitar condiciones de carrera y errores ocultos en la cadena de herramientas.
Fedora ha preparado su infraestructura para hacer frente a estos desafíos. Cambios previos en su sistema de compilación ya han permitido sincronizar los metadatos de modificación de archivos (mtime) con los del código fuente de referencia y asegurar que las estructuras internas de los binarios sean consistentes entre ejecuciones.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Fuente: desdelinux