上一篇关于NixOS镜像想法的帖子发到SHLUG邮件列表后,被群友转到USTCLUG和TUNA的邮件列表,发现有一位同学(微信群中的dram同学)已经做了类似的工作。通过和dram同学交流,关于NixOS的镜像有了一些新的想法,NixOS镜像的工作有了一些新的进展,这里发帖做一个总结。

首先,关于NixOS镜像的想法,已经写成原型脚本,可以用来实验一些想法。上一篇帖子关于频道镜像的功能通过脚本中的1.mirror_channel.sh实现,关于重复包(以及重复的依赖包)的处理的部分,只在历史版本中有(感兴趣的同学可以查看代码库的历史记录),最终版只剩下了新增包下载这部分内容(2.download_binary_cache.sh)。最终版中,没有重复包处理的脚本,是因为和dram同学交流后,发现除了分目录保存每次下载的二进制预编译包外,还可以把所有的包下载到一个目录,然后定期做清理,而且进行清理并非最初想象的那么复杂。经过试验,每次通过nix path-info -r查询所有包的列表的时间是可以接受的,因此,可以通过比较每个版本的频道所包含的包的变化,确认哪些包是可以删除的,从而实现删除过期的包的目的。

在完成原型脚本的初版之后,才得知dram同学已经独立完成了频道数据镜像和二进制缓冲下载的功能,并向TUNA的镜像同步脚本代码库提交的PR。此外,最近几天dram同学还对PR新增了一些文档,并向USTCLUG提交了PR。由于dram同学的工作更为完善,所以 https://github.com/shanghailug/nix_mirror 的脚本的使命是在正式的镜像脚本工作前,做一些测试工作和数据统计工作,完善上一篇帖子中的实验数据。

下面是NixOS-19.09各版本间数据的变化一个统计,版本数据来自 https://channels.nix.gsc.io/nixos-19.09/history-url (去除了Beta版本)。表中每一行是上一行的版本和本行的版本的数据变化。第一个版本是19.09.700.724dbda1e0c,表中未列出。表中NAR大小和下载大小单位均为GiB

时间 版本 路径 NAR大小 下载大小
2019-10-09 06:45 19.09.711.25757b66e18 44149 310.84 78.82
2019-10-09 10:50 19.09.714.2a5bfda3f43 1393 18.85 4.19
2019-10-09 16:35 19.09.716.88bbb3c8096 265 0.40 0.09
2019-10-10 06:55 19.09.735.8d0dc8d737c 2214 26.68 8.06
2019-10-10 12:05 19.09.736.9bbad4c6254 189 0.09 0.01
2019-10-11 01:30 19.09.741.dbad7c7d59f 195 0.10 0.01
2019-10-13 01:22 19.09.766.222004e52e8 1910 34.93 12.00
2019-10-13 07:55 19.09.789.7952807791d 1386 11.48 4.15
2019-10-14 19:05 19.09.794.28d2548a03f 43168 303.28 75.29
2019-10-15 04:50 19.09.809.5000b1478a1 793 8.32 2.16
2019-10-16 06:05 19.09.840.8bf142e001b 1148 8.14 3.63
2019-10-21 19:35 19.09.891.80b42e630b2 25399 231.13 60.18
2019-10-22 23:35 19.09.907.f6dac808387 43095 302.80 75.16
2019-10-26 10:13 19.09.941.27a5ddcf747 391 2.05 0.44
2019-10-28 15:35 19.09.976.c75de8bc12c 16923 206.30 61.45
2019-11-01 09:50 19.09.1019.c5aabb0d603 5784 98.47 35.20
2019-11-07 13:45 19.09.1098.821c7ed030b 42962 301.78 74.93
2019-11-08 07:25 19.09.1125.d628521d0b7 1089 8.19 2.71
2019-11-08 22:50 19.09.1134.d9a83d34c8d 695 9.55 3.26
2019-11-09 02:50 19.09.1149.107e2b7b29f 249 0.77 0.22
2019-11-09 14:35 19.09.1155.bae4d7daa01 192 0.09 0.01
2019-11-10 08:05 19.09.1160.a22b0189002 341 2.38 0.75
2019-11-10 19:15 19.09.1172.2d896998dc9 30254 265.15 66.64
2019-11-12 06:50 19.09.1197.d493b97b265 781 5.41 1.90
2019-11-12 12:50 19.09.1208.ef8c34c4721 189 0.09 0.01
2019-11-13 12:55 19.09.1221.e6a37ef446f 753 5.05 1.55
2019-11-13 13:55 19.09.1223.cb2cdab7136 198 0.44 0.07
2019-11-15 12:50 19.09.1232.133d836dafa 238 0.94 0.24
2019-11-15 13:45 19.09.1241.259a67ca221 244 1.59 0.30
2019-11-15 16:45 19.09.1247.851d5bdfb04 193 0.21 0.04
2019-11-16 05:20 19.09.1254.9104be2ee08 245 0.35 0.06
2019-11-16 18:05 19.09.1258.07e66484e67 215 0.20 0.03
2019-11-19 17:55 19.09.1292.e1843646b04 1078 14.10 5.00
2019-12-09 12:37 19.09.1529.808d3c6d123 14951 201.92 60.46
2019-12-09 15:40 19.09.1548.3a1861fcabc 715 3.84 1.51
2019-12-11 01:15 19.09.1549.45ea6092203 191 0.09 0.01
2019-12-14 12:15 19.09.1584.7351aa52acd 41502 296.12 73.88
2019-12-14 20:35 19.09.1589.57b7b019812 192 0.09 0.01
2019-12-15 19:50 19.09.1590.d85e435b7bd 191 0.09 0.01
2019-12-17 03:20 19.09.1594.fbe321e6669 226 0.62 0.18
2019-12-17 23:00 19.09.1618.c2ef0cee28a 204 1.00 0.22
2019-12-18 00:00 19.09.1619.c337a7423bc 284 0.71 0.22
2019-12-18 02:05 19.09.1620.d40f024a3ba 190 0.09 0.01
2019-12-18 08:20 19.09.1625.0dc46b0e1c8 210 0.62 0.12
2019-12-19 00:50 19.09.1629.ce54d9601ea 584 3.37 1.37
2019-12-19 15:45 19.09.1638.6655a13a56f 288 0.77 0.22
2019-12-19 22:40 19.09.1647.2e73f72c87e 202 0.33 0.09
2019-12-20 15:35 19.09.1654.dd26550fda5 240 0.64 0.24
2019-12-21 03:35 19.09.1662.8e4c9d15456 201 0.67 0.20
2019-12-21 18:40 19.09.1664.968381812b4 192 0.20 0.03
2019-12-22 05:15 19.09.1670.36aa728f2cd 409 1.04 0.22
2019-12-22 19:35 19.09.1673.9bcf1148144 191 0.09 0.01
2019-12-23 21:15 19.09.1682.bfdae0860e4 714 4.10 1.58
2019-12-24 18:10 19.09.1685.e9ef090eb54 190 0.09 0.01
2019-12-26 08:05 19.09.1686.69ed29f5f41 240 0.29 0.04
2019-12-29 00:30 19.09.1687.c5d5561f772 196 0.40 0.10
2019-12-29 08:05 19.09.1690.0d9055a2ac2 189 0.09 0.01
2019-12-30 03:40 19.09.1693.eab4ee0c27c 191 0.14 0.02
2020-01-03 03:40 19.09.1748.ad1e1af5ad3 11363 165.70 53.65
2020-01-04 10:10 19.09.1764.2d9454702e5 356 1.21 0.32
2020-01-04 22:40 19.09.1772.54c9e1f53a7 588 4.89 1.03
2020-01-05 08:35 19.09.1774.a3070689aef 191 0.09 0.01
2020-01-06 01:40 19.09.1776.b926503738c 190 0.18 0.02
2020-01-06 18:55 19.09.1778.db3e8325a9b 528 3.05 1.26
2020-01-07 07:55 19.09.1781.d245ff1bb9b 200 0.09 0.01
2020-01-07 15:50 19.09.1784.fd4ccdbe3a6 200 0.16 0.05
2020-01-08 20:15 19.09.1791.ac218438bdb 1802 15.89 4.96
2020-01-09 04:40 19.09.1803.db5273ce2ab 341 0.76 0.21
2020-01-09 09:50 19.09.1806.b047b7315d8 192 0.13 0.02
2020-01-10 04:30 19.09.1815.caad1a78c47 200 0.42 0.10
2020-01-11 11:35 19.09.1821.9f453eb97ff 586 3.30 1.35
2020-01-12 10:05 19.09.1840.f7d050ed4e3 948 35.08 16.79
2020-01-13 12:15 19.09.1850.5dc4d071ffe 686 4.33 1.57
2020-01-14 03:00 19.09.1861.eb65d1dae62 701 4.01 1.59