如何安装特定的 Debian/Ubuntu 发行版本?

如何安装特定的 Debian/Ubuntu 发行版本?

我正在研究可重现的构建,并希望最终得到一个脚本来设置持续的包含我的构建环境的 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 策略同一天的两个快照之间会发生变化。然而/etc/debian_version没有更新,尽管查看基础文件包版本显示有新版本可用。请注意,没有针对发布拍摄的明确快照,因此这种方法是“尽力而为”的。因此,有多种方法可以定义 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/

相关内容