Results 12 comments of Peng Mei Yu

1. GuixSD 已经更名为Guix System,即Guix操作系统。GuixSD这个单词已弃用。建议更新此issue标题内的GuixSD为Guix。 2. 上游源地址已变。新的地址是 `https://ci.guix.gnu.org`。 3. Guix China组织已提供镜像,欢迎测试。详见: https://guix-china.github.io/wiki/mirror/ 。 4. 希望不要因为第3点关闭此issue。mirror.guix.org.cn的硬件资源有限,无法提供大规模的服务。我们仍然希望国内高校能提供Guix镜像服务。

mirror.guix.org.cn 运行59天之后的统计数据: 1. Nginx缓存文件共25GB。没有删除过缓存文件,因此累计入站流量也是25GB。 2. 从Nginx日志统计的累计出站流量76GB。 由此得出:日均入站流量0.42GB,日均出站流量1.29GB。出站流量是入站流量的三倍。 我估计活跃用户有10个人左右。

> 你能不能把镜像的方法写个教程啊 > ustc和tuna的镜像站维护人员不知道怎么镜像 只是一个简单的Nginx代理,上面提到的Nginx配置就可以用。mirror.guix.org.cn服务器的配置文件在:https://github.com/guix-china/guix-china-maintenance/

> 代理和镜像是两码事吧 如果一个网站长得像ci.guix.gnu.org,用起来像ci.guix.gnu.org,即使脱离ci.guix.gnu.org,它仍然还能活着。那么它为什么不可以叫ci.guix.gnu.org的镜像?

> 您可以提供一份 ci.guix.gnu.org 的文件特性列表(e.g. 哪些文件是一经上传不会变化,哪些需要回源或反代,哪些需要改写内容再返回用户),我们可以搭建一个基于 mirror-intel 的缓存。 @skyzh 你好,感谢你对Guix镜像的兴趣。 ci.guix.gnu.org 含有如下资源: - `narinfo`文件 narinfo是软件包的元数据。文件大小通常在0.5kB至2kB之间。 URL以`".narinfo"`结尾,模式是`"/${hash}.narinfo"`。 例如:`"/x1jgawvxlqckw519hg657xs0gg1n90m4.narinfo"`。 - `nar`文件 nar是软件包。和其它发行版的软件包类似,文件大小不固定。 URL以`"/nar/"`开头,模式是 `"/nar/${compression_algorithm}/${hash}-${package_name}"`。 例如:`"/nar/lzip/b81g1xfpqrf68aw9r3fzn30g0j7db6yi-guix-system"`。 - `/nix-cache-info` 这是一个历史遗留下来的文件,内容固定,只有几十字节。可以不处理。 - 剩下的URL是CI服务的网页资源和API,可以直接转发给上游,也可以不处理。 narinfo和nar文件对用户来说是最重要的。narinfo和nar的内容都是不会变化的,可以保存很久。但是随着时间推移,旧的资源就 没人用了。为了节省硬盘空间,可以定期清理长时间没有访问过的文件。

> 与此同时,如果可以拿到所有需要下载文件的链接,就可以集成到 https://github.com/sjtug/mirror-clone 做全量同步。比如目前 SJTUG 的 rustup 镜像就是通过 HTTP HEAD 访问 mirror-intel 所有需要缓存文件 URL 的方法,同步近 30 天的所有工具链。 这个不好实现,因为即使CI已经构建好了某个软件,这个软件是以普通文件的形式存放在CI服务器的`/gnu/store`文件夹里,只有当用户向CI服务器请求这个软件时,CI服务器才会生成`narinfo`和`nar`,然后返回给用户。所以没法预先拿到全部的下载链接。上游愿意开放rsync接口,提供`guix-publish`缓存文件夹,`guix-publish`缓存文件夹里有CI生成出来的`narinfo`和`nar`文件,但是文件保存路径和URL路径是不一致的,不能通过静态HTTP服务直接提供给用户。最近问了开发者,他们在这一块暂时没有改动的意愿。我们可以通过`guix-publish`缓存文件夹里的文件信息预先拉取部分的软件包,但是我觉得没太大必要。目前rsync接口还没开放出来,我最近再催一催。

> > > 与此同时,如果可以拿到所有需要下载文件的链接,就可以集成到 https://github.com/sjtug/mirror-clone 做全量同步。比如目前 SJTUG 的 rustup 镜像就是通过 HTTP HEAD 访问 mirror-intel 所有需要缓存文件 URL 的方法,同步近 30 天的所有工具链。 > > > > > > 这个不好实现,因为即使CI已经构建好了某个软件,这个软件是以普通文件的形式存放在CI服务器的`/gnu/store`文件夹里,只有当用户向CI服务器请求这个软件时,CI服务器才会生成`narinfo`和`nar`,然后返回给用户。所以没法预先拿到全部的下载链接。上游愿意开放rsync接口,提供`guix-publish`缓存文件夹,`guix-publish`缓存文件夹里有CI生成出来的`narinfo`和`nar`文件,但是文件保存路径和URL路径是不一致的,不能通过静态HTTP服务直接提供给用户。最近问了开发者,他们在这一块暂时没有改动的意愿。我们可以通过`guix-publish`缓存文件夹里的文件信息预先拉取部分的软件包,但是我觉得没太大必要。目前rsync接口还没开放出来,我最近再催一催。 > > 如果可以拿到两者的对应关系,就可以接入 mirror-clone...

@nameoverflow Deterministic means [Reproducible Builds](https://reproducible-builds.org/docs/definition/). A build is reproducible if given the same source code, build environment and build instructions, any party can recreate bit-by-bit identical copies of all specified...

> @nameoverflow > I think they meant that the data files are not the same across rebuild, not the `rime_deployer` binary. Yes. The binary schema data files produced by rime_deployer...

> We've tried to make binary data files work for different CPU architectures. That's not necessary. Could it be caused by YAML schema file's filesystem timestamps? Does the binary schema...