Как установить определенную версию релиза Debian/Ubuntu?

Как установить определенную версию релиза Debian/Ubuntu?

Я изучаю воспроизводимые сборки и хотел бы, чтобы в результате получился скрипт, который настраиваетпостоянныйОбраз виртуальной машины, содержащий мою среду сборки. Пока что я отложу в сторону проблемы с временными метками и другими источниками различий, поэтому по "постоянный", я имею в виду воспроизводимую среду. Я знаю о DebianВоспроизводимыеСборкиусилия, которые предъявляют требования кверсии пакетовчтобы гарантировать идентичную сборку. Я хочу что-то похожее, но всистемауровень.

Я начал с Alpine, который позволяет мне создавать виртуальную машину на основеконкретный релизочень легко.

Как бы я сделал то же самое для Debian, который предоставляет, например,потягиватьсяверсии 9.0 - 9.4?

Лучшее, что я смог придумать на данный момент, было следующее: я взглянул нарелиз журнал изменений, затем использовал ближайшийснимоккак мой исходный пакет длядебутстрап.

$ 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

Как мы видим, тег релиза отполитика apt-cacheизменения между двумя снимками одного и того же дня. Однако/etc/debian_версияне обновляется, хотя смотрю наверсии пакета базовых файловпоказывает, что доступна новая версия. Обратите внимание, что явного снимка при выпуске не делается, поэтому этот подход является "лучшим усилием". Следовательно, существует несколько способов определить, что на самом деле представляет собой выпуск Debian 9.2.

Я не вижу смысла в точечных релизах, если нет простого способа их таргетировать, так что, должно быть, я упускаю что-то очевидное.

решение1

После дальнейшего поиска в Интернете я нашел ветку в списке пользователей Debian на ту же тему:Ограничить apt определенным дистрибутивом Jessie(гугл копия). Этотконкретный постдает развернутый ответ, также опираясь на снимки Debian.

Чего по-прежнему не хватает, так это снимка, четко связанного с точечным выпуском, но для моих целей подойдет любой.

Чтобы связать официальный релиз со снимком, можно использовать информацию из файлов jigdo, которые позволяют пересобрать официальный ISO:

$ 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/

Связанный контент