web-dev-qa-db-ja.com

特定のDebian / Ubuntuリリースバージョンをインストールするにはどうすればよいですか?

私は再現可能なビルドを調査しており、ビルド環境を含むconstant VMイメージ)をセットアップするスクリプトで終了することを望んでいます。今のところ、タイムスタンプやその他の違いの原因に関する問題を脇に置いておくと、「constant」とは、再現可能な環境を意味します。Debian ReproducibleBuilds の取り組みを認識しており、要件があります。 パッケージバージョンで、同一のビルドを保証します。似たようなものが必要ですが、システムレベル。

私はAlpineから始めました。これにより、 特定のリリース に基づいてVMを非常に簡単に作成できます。

たとえばstretchリリース9.0から9.4を提供するDebianでも同じことをするにはどうすればよいですか?

これまでに思いついた最善の方法は次のとおりです。 リリース変更ログ を確認し、最も近い スナップショットのパッケージソースとして使用しました。 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

ご覧のとおり、apt-cache policyのリリースタグは同じ日の2つのスナップショット間で変更されます。ただし、 base-fileパッケージバージョン を見ると、新しいバージョンが利用可能になっていることが示されていても、/ etc/debian_versionは更新されません。リリース時に明示的なスナップショットが作成されないため、このアプローチは「ベストエフォート」アプローチであることに注意してください。したがって、Debianリリース9.2が実際に何であるかを定義する方法は複数あります。

ドットリリースをターゲットにする簡単な方法がなければ、ドットリリースのポイントは実際にはわかりません。そのため、明らかな何かを見逃しているに違いありません。

4
slv

さらにWebを掘り下げた後、同じトピックのDebianユーザーリストにスレッドが見つかりました:特定のJessieディストリビューションに制限するgoogle copy )。この 特定の投稿 は、Debianスナップショットにも依存して、長い答えを与えます。

まだ不足しているのは、ポイントリリースに明確に関連付けられているスナップショットですが、私の目的には何でもかまいません。

公式リリースをスナップショットにリンクするには、公式ISOを再構築するためのjigdoファイルの情報を使用できます。

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