私は再現可能なビルドを調査しており、最終的にスクリプトを作成して、絶え間ないビルド環境を含む VM イメージ。今のところ、タイムスタンプやその他の相違点の問題は脇に置いておき、"絶え間ない「再現可能な環境」という意味です。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 ポリシー同じ日の2つのスナップショット間の変化。ただし/etc/debian_version更新されないので、ベースファイルパッケージのバージョン新しいバージョンが利用可能になったことを示します。リリース時に明示的にスナップショットが作成されるわけではないので、このアプローチは「ベスト エフォート」のものであることに注意してください。したがって、Debian リリース 9.2 が実際に何であるかを定義する方法は複数あります。
ドット リリースをターゲットにする簡単な方法がなければ、ドット リリースの意味がまったくわかりません。何か明らかなことを見逃しているに違いありません。
答え1
さらに Web で調べたところ、Debian ユーザー リストで同じトピックに関するスレッドを見つけました。apt を特定の Jessie ディストリビューションに制限する(グーグルコピー)。 これ特定の投稿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/