- Fedora está impulsando en Fedora 43 cambios para que el 99% de todos sus paquetes sean reproducibles
- Ya alcanzó el 90% mediante mejoras en la infraestructura existente, y planea incentivar a los empaquetadores para que reconozcan y resuelvan los casos restantes como bugs
- El objetivo es reforzar la seguridad y mejorar la calidad de los paquetes, y también está previsto introducir la herramienta de verificación independiente
rebuilderd
Panorama general de las compilaciones reproducibles en software de código abierto
- Las "compilaciones reproducibles" están ganando importancia para reforzar la seguridad del software de código abierto y verificar su integridad
- Una compilación reproducible es aquella en la que cualquiera puede generar el mismo resultado usando el mismo código fuente, entorno de compilación y comandos de compilación
- Debian lleva más de 10 años de ventaja en este campo, y actualmente incluso sus Live CD oficiales pueden producirse de forma reproducible
- Fedora empezó a trabajar en compilaciones reproducibles más recientemente, pero está evaluando una propuesta para hacer reproducible el 99% de todos sus paquetes durante el ciclo de desarrollo de Fedora 43
Diferencias entre Fedora y Debian
- Debian permite subir paquetes compilados localmente, lo que puede hacer que la confiabilidad sea menor
- Fedora compila todos los paquetes de forma centralizada en una infraestructura fuertemente controlada
- Fedora facilita el seguimiento de paquetes al incluir el código fuente e información de hash en un repositorio Git llamado
dist-git
Definición propia de Fedora para compilaciones reproducibles
- Fedora usa una definición distinta a la de Debian
- Excluye la firma (
signature) y parte de los metadatos, y se enfoca en el contenido real (payload) del archivo RPM
- La razón es que el formato RPM y su método de firma incluyen información como la hora de compilación (
BUILDTIME) y el host de compilación (BUILDHOST)
- openSUSE resuelve esto configurando
BUILDHOST como reproducible
Avances técnicos de Fedora hacia las compilaciones reproducibles
- Desde Fedora 38 se aplicó un cambio que usa
SOURCE_DATE_EPOCH para fijar la hora de modificación de los archivos
- En Fedora 41 se introdujo una herramienta basada en Rust llamada
add-determinism, que estandariza los metadatos de los archivos compilados
- Debian usa una biblioteca en Perl llamada
strip-nondeterminism, pero Fedora eligió una herramienta propia para evitar dependencias de Perl
- Hasta ahora se ha logrado aproximadamente un 90% de reproducibilidad en los paquetes
Planes a futuro
- El 9% restante se abordará incentivando a los empaquetadores a tratar los problemas de no reproducibilidad como bugs y corregirlos
- Se ofrecerá la utilidad
fedora-repro-build para probar localmente si una compilación de Koji es reproducible
- Se planea operar públicamente un sistema de verificación independiente llamado
rebuilderd, que analiza los metadatos de los paquetes y verifica la reproducibilidad mediante recompilaciones
rebuilderd puede generar reportes de diferencias mediante diffoscope
Guías de empaquetado y mejora de calidad
- Las guías de empaquetado de Fedora se actualizarán a "debe compilarse de forma reproducible cuando sea posible"
- Las compilaciones reproducibles contribuyen no solo a la seguridad, sino también a mejorar la calidad de los paquetes
- Ejemplo: si se detecta una dependencia de hardware en un paquete independiente de la arquitectura, probablemente se trate de un bug
Casos de excepción no reproducibles
- Haskell no es reproducible en compilaciones multihilo, y ya se está trabajando en una corrección
- Go no es reproducible porque el archivo de depuración
.gdb_index no es consistente, y no hay una solución
- La firma de módulos del kernel de Linux usa claves temporales, y ya se propuso un parche relacionado
Retroalimentación de la comunidad
- El equipo de infraestructura de Fedora planteó preguntas sobre la ubicación y el mantenimiento de
rebuilderd
- También se discutió si
rebuilderd podría integrarse en Koji
- También hay opiniones de que, para una verificación independiente, es preferible usar un sistema fuera de Koji
- Algunos incluso propusieron aprovechar Copr en lugar de
rebuilderd
- En general, se prefiere avanzar en una dirección que aumente la integración con las herramientas existentes de Fedora
Próximos pasos
- Se prevé presentar un ticket de propuesta ante FESCo (Fedora Engineering Steering Committee)
- Si se aprueba, planean impulsar seriamente la ejecución hasta octubre, objetivo de lanzamiento de Fedora 43
- Los usuarios finales probablemente no notarán grandes diferencias, pero es un cambio muy valioso desde la perspectiva de la seguridad de la cadena de suministro
7 comentarios
El equipo de Fedora siempre me sorprende y da la sensación de que la mayoría de sus decisiones avanzan en la dirección correcta. Lo uso con agradecimiento hacia todas las personas que contribuyen cada vez.
Siento que antes se usaba mucho, pero ¿por qué hoy en día parece que quedó en el olvido?
Sigue siendo muy popular dentro de la comunidad Linux para usarse como escritorio Linux.
Como no es una distribución orientada a servidores, parece que en nuestro país no tiene tanta notoriedad, ya que el escritorio Linux no es muy activo.
Ajá, hoy en día, si no eres un usuario avanzado, parece que terminas eligiendo Ubuntu, que puede usarse tanto en servidor como en escritorio.
Me alegra ver algo sobre Linux, así que quería agregar mi comentario.. jaja
Ubuntu, desde la adopción de snap, perdió mucho apoyo entre quienes usan escritorio.. y Unity DE siempre ha dividido bastante las opiniones.. además, su ciclo de lanzamientos es demasiado largo, así que el soporte para los drivers más recientes tampoco es muy bueno..
Si están considerando usar Linux de escritorio, de verdad les recomiendo Fedora.
Fedora usa un Gnome muy cercano al original, y Gnome también ha venido con actualizaciones muy sólidas últimamente, así que estoy realmente satisfecho.
Gracias jaja
Cuando pienso en Fedora, me trae viejos recuerdos.
Comentarios de Hacker News