slv*_*slv 5 debian debootstrap
我正在研究可重复的构建,并希望最终得到一个脚本来设置包含我的构建环境的恒定虚拟机映像。现在,我将把时间戳和其他差异来源的问题放在一边,因此“恒定”是指可重现的环境。我知道 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/ {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
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的, apt-cache 策略的发布标签在同一天的两个快照之间发生了变化。然而,即使查看基本文件包版本显示有新版本可用, /etc/debian_version也不会更新。请注意,发布时没有拍摄明确的快照,因此这种方法是“尽力而为”的方法。因此,有多种方法可以定义 Debian 版本 9.2 的实际含义。
如果没有一种简单的方法来定位它们,我真的不明白点释放的意义,所以我一定错过了一些明显的东西。
经过更多的网络挖掘,我在 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/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1061 次 |
最近记录: |