Como instalar uma versão específica do Debian / Ubuntu?

2

Estou investigando compilações reproduzíveis e gostaria que isso terminasse com um script que configura uma imagem de VM constante contendo meu ambiente de criação. Por enquanto, vou deixar de lado os problemas com registros de data e hora e outras fontes de diferenças, então por " constante ", quero dizer, um ambiente reproduzível. Estou ciente do esforço do ReproducibleBuilds do Debian, que coloca um requisito em versões do pacote para garantir um construção idêntica. Quero algo semelhante, mas no nível do sistema .

Comecei com o Alpine, o que me permite criar uma VM com base em um específico liberar com muita facilidade.

Como eu faria o mesmo para o Debian, que fornece por exemplo stretch versões 9.0 a 9.4?

O melhor que eu pude fazer até agora foi o seguinte: Eu dei uma olhada no lançamento do changelog , então usei o instantâneo mais próximo como fonte de meu pacote para debootstrap .

$ 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, a tag de lançamento da política do apt-cache muda entre dois instantâneos do mesmo dia. No entanto, / etc / debian_version não é atualizado, apesar de olhar para o pacote do arquivo base versões mostra que uma nova versão é disponibilizada. Observe que não há um instantâneo explícito sobre um lançamento, portanto, essa abordagem é de "melhor esforço". Consequentemente, existem várias maneiras de definir o que a versão 9.2 do Debian realmente é.

Eu realmente não vejo o ponto de lançamento de pontos se não houver uma maneira simples de segmentá-los, então devo estar perdendo algo óbvio.

    
por slv 10.04.2018 / 16:27

1 resposta

0

Depois de mais escavações na web, encontrei um tópico na lista de usuários Debian sobre o mesmo tópico: Restrinja o apt à distro Jessie específica ( google copy ). Esta postagem em particular dá uma resposta demorada, contando também com os instantâneos do Debian.

O que ainda falta é um instantâneo claramente associado a um lançamento pontual, mas qualquer um fará o meu propósito.

Para vincular um lançamento oficial a um instantâneo, é possível usar as informações dos arquivos jigdo que permitem reconstruir um 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/
    
por 13.04.2018 / 16:48