De Arch Linux-distributie heeft reproduceerbare builds van containerbeelden geleverd, waarmee kan worden gecontroleerd of de in het beeld geleverde binaire bestanden zijn opgesteld uit de beschikbare broncode en geen verborgen wijzigingen bevatten. Reproduceerbare Arch Linux-beelden zijn geüpload naar Docker Hub met de tag repro. Iedereen kan een containerbeeld bit voor bit opbouwen dat overeenkomt met de door het project aangeboden kant-en-klare beelden, en verifiëren dat de opbouwinfrastructuur van de distributie, de compiler en de build-tooling niet gecompromitteerd zijn.
Bij het vormen van reproduceerbare builds wordt rekening gehouden met nuances zoals de exacte overeenstemming van afhankelijkheden; het gebruik van een onveranderlijke set en versies van de build-tooling; een identieke set opties en standaardinstellingen; het behoud van de opbouwvolgorde van bestanden (het toepassen van dezelfde sorteermethoden); het uitschakelen van het toevoegen van onbetrouwbare metadata door de compiler, zoals willekeurige waarden, verwijzingen naar bestandslocaties en timestamp-gegevens van de build. Bugs en racecondities in de tooling kunnen ook invloed hebben op de reproduceerbaarheid van builds.
Reproduceerbare beelden worden apart geleverd omdat er voor volledige reproduceerbaarheid geen sleutels voor de pakketbeheerder pacman in hun samenstelling zijn opgenomen. Bij het upgraden of installeren van pakketten via pacman in deze beelden is het nodig om het commando uit te voeren voor het opnieuw aanmaken van de sleutelopslag (‘pacman-key —init && pacman-key —populate archlinux’). Om de identiteit van je eigen build met het via Docker Hub verspreide beeld te verifiëren, kun je de hashes vergelijken die worden gegeven door het commando ‘podman inspect —format ‘{{.Digest}}’ ’, of gebruikmaken van de tool diffoci.
Bron: opennet.ru
