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

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

Estou investigando compilações reproduzíveis e gostaria que isso terminasse com um script que configurasse umconstanteImagem VM contendo meu ambiente de construção. Por enquanto, deixarei de lado os problemas com carimbos de data e hora e outras fontes de diferenças, então por "constante", quero dizer um ambiente reproduzível. Estou ciente do DebianConstruções reproduzíveisesforço, o que impõe uma exigênciaversões do pacotepara garantir uma construção idêntica. Eu quero algo semelhante, mas nosistemanível.

Comecei com Alpine, que me permite criar uma VM baseada em umlançamento específicomuito facilmente.

Como eu faria o mesmo para o Debian, que fornece, por exemploesticarlibera 9.0 a 9.4?

O melhor que consegui até agora foi o seguinte: dei uma olhada nolançar registro de alterações, então usei o mais próximoinstantâneocomo minha fonte de pacote paradebootstrap.

$ 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 depolítica do apt-cachealterações entre dois instantâneos do mesmo dia. No entanto/etc/debian_versionnão é atualizado, mesmo olhando para oversões do pacote de arquivo basemostra que uma nova versão está disponível. Observe que não há nenhum instantâneo explícito obtido em um lançamento, portanto, essa abordagem é de "melhor esforço". Conseqüentemente, existem múltiplas maneiras de definir o que realmente é a versão 9.2 do Debian.

Eu realmente não vejo sentido em lançamentos pontuais se não houver uma maneira simples de direcioná-los, então devo estar perdendo algo óbvio.

Responder1

Depois de mais pesquisas na web, encontrei um tópico na lista de usuários do Debian sobre o mesmo tópico:Restringir o apt à distribuição específica de Jessie(cópia do Google). Essepostagem específicadá uma resposta longa, também contando com os snapshots do Debian.

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

Para vincular um lançamento oficial a um snapshot, pode-se 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/

informação relacionada