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

430
slv

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

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

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

Лучшее, что я смог придумать, было следующее: я посмотрел журнал изменений релиза, а затем использовал ближайший снимок в качестве источника пакета для 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/ ' 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 

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

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

2

1 ответ на вопрос

0
slv

После дополнительных поисков в Интернете я нашел тему в списке пользователей Debian на ту же тему: ограничить apt определенным дистрибутивом Jessie ( копия Google ). Этот конкретный пост дает длинный ответ, также опираясь на снимки 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/ ' http://snapshot.debian.org/archive/debian/20171209T215122Z/ 

Похожие вопросы