Estoy investigando compilaciones reproducibles y me gustaría terminar con un script que establezca unconstanteImagen de VM que contiene mi entorno de compilación. Por ahora, dejaré de lado los problemas con las marcas de tiempo y otras fuentes de diferencias, por lo que "constante", me refiero a un entorno reproducible. Conozco DebianConstrucciones reproduciblesesfuerzo, lo que impone una exigenciaversiones del paquetepara garantizar una construcción idéntica. Quiero algo similar, pero alsistemanivel.
Empecé con Alpine, que me permite crear una VM basada en unlanzamiento específicomuy facilmente.
¿Cómo haría lo mismo para Debian, que proporciona, por ejemplo?estirar¿Lanzamientos 9.0 a 9.4?
Lo mejor que se me ocurrió hasta ahora fue lo siguiente: eché un vistazo alliberar registro de cambios, luego usó el más cercanoinstantáneacomo mi fuente de paquete paracorrea de arranque.
$ wget -q -O- http://ftp.debian.org/debian/dists/stretch/ChangeLog | grep "Debian.*released"
Sat, 10 Mar 2018 - Debian 9.4 released
Sat, 09 Dec 2017 - Debian 9.3 released
Sat, 07 Oct 2017 - Debian 9.2 released
Sat, 22 Jul 2017 - Debian 9.1 released
Sat, 17 Jun 2017 - Debian 9.0 released
$ # Looking at release 9.2
$ wget -q -O- "http://snapshot.debian.org/archive/debian/?year=2017&month=10" | html2text | sed -e 's/[:-]//g' -e 's/_/T/g' | awk '/20171007/ {print "http://snapshot.debian.org/archive/debian/"$1"Z/"}'
http://snapshot.debian.org/archive/debian/20171007T032909Z/
http://snapshot.debian.org/archive/debian/20171007T103908Z/
http://snapshot.debian.org/archive/debian/20171007T213914Z/
$ mkdir -p chroot_stretch_20171007T103908Z
$ sudo debootstrap --arch=amd64 --variant=minbase stretch chroot_stretch_20171007T103908Z http://snapshot.debian.org/archive/debian/20171007T103908Z/
I: Retrieving InRelease
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 067E3C456BAE240ACEE88F6FEF0F382A1A7B6500)
I: Retrieving Packages
(...)
$ find -maxdepth 1 -name "chroot_stretch_2017100*" | sort | while read d; do echo $d; cat $d/etc/debian_version; sudo chroot $d apt-cache policy | grep stretch; echo ""; done
./chroot_stretch_20171006T213452Z
9.1
500 http://snapshot.debian.org/archive/debian/20171006T213452Z stretch/main amd64 Packages
release v=9.1,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
./chroot_stretch_20171007T032909Z
9.1
500 http://snapshot.debian.org/archive/debian/20171007T032909Z stretch/main amd64 Packages
release v=9.1,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
./chroot_stretch_20171007T103908Z
9.1
900 http://snapshot.debian.org/archive/debian/20171007T103908Z stretch/main amd64 Packages
release v=9.2,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
./chroot_stretch_20171007T213914Z
9.1
500 http://snapshot.debian.org/archive/debian/20171007T213914Z stretch/main amd64 Packages
release v=9.2,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
./chroot_stretch_20171008T032534Z
9.1
500 http://snapshot.debian.org/archive/debian/20171008T032534Z stretch/main amd64 Packages
release v=9.2,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
Como podemos ver, la etiqueta de lanzamiento depolítica de caché aptacambios entre dos instantáneas del mismo día. Sin embargo/etc/versión_debianno se actualiza, a pesar de mirar elversiones del paquete de archivos basemuestra que hay una nueva versión disponible. Tenga en cuenta que no se toma una instantánea explícita de un lanzamiento, por lo que este enfoque es el de "mejor esfuerzo". En consecuencia, existen múltiples formas de definir qué es realmente la versión 9.2 de Debian.
Realmente no veo el sentido de los lanzamientos de puntos si no hay una forma sencilla de apuntar a ellos, por lo que debo estar perdiendo algo obvio.
Respuesta1
Después de investigar más en la web, encontré un hilo en la lista de usuarios de Debian sobre el mismo tema:Restringir apto a una distribución específica de Jessie(copia de google). Estepublicación particularda una respuesta larga, basándose también en las instantáneas de Debian.
Lo que todavía falta es una instantánea claramente asociada a un lanzamiento puntual, pero cualquiera servirá para mi propósito.
Para vincular una versión oficial a una instantánea, se puede usar la información de los archivos jigdo que le permiten reconstruir una ISO oficial:
$ wget -q -O - https://cdimage.debian.org/mirror/cdimage/archive/8.10.0/amd64/jigdo-bd/debian-8.10.0-amd64-BD-1.jigdo | gunzip | awk -F= '/snapshot.debian.org/ {print $2}'
http://snapshot.debian.org/archive/debian/20171209T215122Z/