Hace poco se dio a conocer el lanzamiento de ”Rebuilderd” el cual se posiciona como un sistema de verificación independiente de paquetes binarios que permite organizar la verificación de los paquetes de una distribución mediante la implementación de un proceso de compilación en funcionamiento continuo que compara los paquetes descargables con los paquetes recibidos como resultado de la reconstrucción en el sistema local.
En otras palabras, este sistema proporciona un servicio que monitorea el estado del índice de paquetes y automáticamente comienza a reconstruir nuevos paquetes en el entorno de referencia, cuyo estado se sincroniza con la configuración del entorno de compilación principal de Arch Linux.
Al volver a realizar la compilación, se tienen en cuenta matices como la correspondencia exacta de las dependencias, el uso de composiciones y versiones sin cambios de las herramientas de compilación, el conjunto idéntico de opciones y la configuración predeterminada y la preservación del orden del ensamblaje de archivos (utilizando los mismos métodos de clasificación).
La configuración del proceso de compilación excluye al compilador de agregar información general inconsistente, como valores aleatorios, enlaces a rutas de archivos y datos sobre la fecha y hora de compilación.
Sobre Rebuilderd
Actualmente solo se encuentra disponible el soporte experimental para verificar paquetes de Arch Linux con rebuilderd, pero se tiene en mente añadir pronto el soporte para Debian.
Actualmente, se proporcionan compilaciones repetibles para el 84.1% de los paquetes del repositorio principal de Arch Linux, él 83.8% del repositorio de extras y el 76.9% del repositorio de la comunidad. A modo de comparación, en Debian 10 esta cifra es del 94,1%.
Mientras que, las compilaciones son una parte importante de la seguridad, ya que le brindan a cualquier usuario la oportunidad de asegurarse de que los paquetes byte por byte ofrecidos por el paquete de distribución coincidan con los compilados personalmente desde la fuente.
Sin la capacidad de verificar la identidad del binario compilado, el usuario solo puede confiar ciegamente en la infraestructura de la compilación de otra persona, comprometiendo el compilador o las herramientas de compilación en las que puede llevar a la sustitución de marcadores ocultos.
Instalación y ejecución
En el caso más simple, para ejecutar rebuilderd es suficiente instalar el paquete rebuilderd desde el repositorio normal, importar la clave GPG para verificar el entorno y activar el servicio del sistema correspondiente. Es posible implementar una red de múltiples instancias de reconstruido.
Para realizar la instalación, debemos de abrir una terminal y en ella tecleamos el siguiente comando:
sudo pacman -S rebuilderd
Hecho esto, ahora debemos de importar la clave GPG, ya que Rebuilderd debe verificar la imagen de arranque de Arch Linux, para ello en la terminal tendremos que teclear el siguiente comando:
gpg --auto-key-locate nodefault,wkd --locate-keys pierre@archlinux.de
Posterior a esto tenemos que añadir nuestro usuario al grupo de Rebuilderd, ya que es posible que recibamos un error:
usermod -aG rebuilderd $USER
Ahora simplemente tenemos que verificar que Rebuilderd ya se encuentra en ejecución sobre el sistema, para ello, solo tenemos que teclear:
rebuildctl status
Y en caso de querer compartir resultados en la red, tenemos que teclear:
systemctl enable –now rebuilderd rebuilderd-worker@alpha
Ahora es importante tomar en cuenta que Rebuilderd no entrara en acción hasta que se especifique explícitamente desde dónde se sincronizan los paquetes del sistema, para ello tenemos que modificar el archivo /etc/rebuilderd-sync.conf en donde los perfiles de sincronización están configurados y que los nombres de perfil son únicos:
Un ejemplo de ello es lo siguiente:
## rebuild all of core
[profile."archlinux-core"]
distro = "archlinux"
suite = "core"
architecture = "x86_64"
source = "https://ftp.halifax.rwth-aachen.de/archlinux/core/os/x86_64/core.db"
## rebuild community packages of specific maintainers
#[profile."archlinux-community"]
#distro = "archlinux"
#suite = "community"
#architecture = "x86_64"
#source = "https://ftp.halifax.rwth-aachen.de/archlinux/community/os/x86_64/community.db"
#maintainer = ["somebody"]
Ya modificado el archivo, simplemente se tiene que habilitar el temporizador para sincronizar automáticamente el perfil:
systemctl enable --now rebuilderd-sync@archlinux-core.timer
Finalmente si quieren conocer mas al respecto sobre Rebuilderd, deben saber que está escrito en Rust y se distribuye bajo la licencia GPLv3 y puedes consultar todos sus detalles y el código en el siguiente enlace.