Closed ZeroAurora closed 4 years ago
刚刚发现一个问题,这玩意没我想象的那么简单。每个包的描述文件都包含着原 repo 的地址,导致就算镜像了,运行时依赖还是得从原 repo 下载。具体睡醒再说吧
拿sed批量换一下?
我之前给pybombs做镜像的时候就是这么办的...
https://mirrors.tuna.tsinghua.edu.cn/help/pybombs/
-- Wang Kang
On Sat, 9 Mar 2019, ZeroAurora wrote:
刚刚发现一个问题,这玩意没我想象的那么简单。每个包的描述文件都包含着原 repo 的地址,导致就算镜像了,运行时依赖还是得从原 repo 下载。具体睡醒再说吧,
先前测试了一下,似乎可行,但是好像要 GPG 密钥,所以没接着试……我再试试看,把 log 贴一份
zeroaurora@fedora ~/test> ostree --repo=repo pull --mirror flatpak
Receiving metadata objects: 7/(estimating) 1.3 KB/s 4.0 KB
GPG: Verification enabled, found 1 signature:
Signature made 2018年10月10日 星期三 09时36分58秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
GPG: Verification enabled, found 1 signature:
Signature made 2019年01月14日 星期一 18时05分50秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
Caught error, waiting for outstanding tasks
GPG: Verification enabled, found 1 signature:
Signature made 2018年11月12日 星期一 18时53分50秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
GPG: Verification enabled, found 1 signature:
Signature made 2018年12月11日 星期二 21时14分43秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
GPG: Verification enabled, found 1 signature:
Signature made 2019年03月17日 星期日 23时47分34秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
GPG: Verification enabled, found 1 signature:
Signature made 2018年10月26日 星期五 07时57分32秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
GPG: Verification enabled, found 1 signature:
Signature made 2019年02月24日 星期日 06时58分01秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
Caught error, waiting for outstanding tasks
GPG: Verification enabled, found 1 signature:
Signature made 2019年03月20日 星期三 19时03分12秒 using RSA key ID 562702E9E3ED7EE8
Can't check signature: public key not found
error: Commit d5682ee2abdc2a3fadc9040355396bcaf37f474bd898de099e0a15f80e4485aa: GPG signatures found, but none are in trusted keyring
所以现在要找 GPG 公钥,但我没法在他们网站上直接找到 我不是很了解 GPG,所以希望能得到帮忙
Maybe this may help https://pulpproject.org/
zeroaurora@fedora ~/test> ostree --repo=repo pull --mirror flatpak Signature made 2019年03月20日 星期三 19时03分12秒 using RSA key ID 562702E9E3ED7EE8 Can't check signature: public key not found error: Commit d5682ee2abdc2a3fadc9040355396bcaf37f474bd898de099e0a15f80e4485aa: GPG signatures found, but none are in trusted keyring
所以现在要找 GPG 公钥,但我没法在他们网站上直接找到 我不是很了解 GPG,所以希望能得到帮忙
官方flathub remote地址为 https://flathub.org/repo/flathub.flatpakrepo
wget https://flathub.org/repo/flathub.flatpakrepo
flathub.flatpakrepo文件里面有 GPGKey 字段。根据 http://docs.flatpak.org/en/latest/repositories.html 文档,该字段为base64编码的gpg public key.
将它解码后,导入本地gpg:
grep 'GPGKey=' flathub.flatpakrepo | cut -d'=' -f2 | gpg --import
检查该key的基本信息:
gpg -k flathub@flathub.org
信任该pubkey:
gpg --edit-key flathub@flathub.org
trust
3 (I trust marginally)
Ctrl-D
确认该key是否已受信任
gpg --edit-key flathub@flathub.org
Ctrl-D
flatpak的仓库其实是一个包含了一些flatpak元数据的ostree仓库,创建flathub的ostree仓库镜像的方法:
$ mkdir localrepo && cd localrepo
$ ostree init --repo=$PWD --mode=archive --collection-id=org.flathub.Stable
$ ostree remote add --repo=$PWD --no-gpg-verify flathub https://dl.flathub.org/repo/
$ ostree pull --repo=$PWD --mirror flathub
$ flatpak build-update-repo $PWD
https://flathub.org/repo/flathub.flatpakrepo
中的Url项改为本地镜像的路径即可ostree的设计类似于git,原生支持增量更新,所以每次同步镜像的时候执行一次ostree pull --repo=$PWD --mirror flathub
就行了。
希望这个镜像能尽快实现。我发现最近flathub用fastly.net的CDN了,国内全部解析到日本节点了,彻底没法用了。国内基本上把日本节点的ip屏蔽了个干净
感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要 flatpak build-update-repo $PWD
这步吗?
我尝试了一下发现,我这边flatpak install
的速度正常(大约 5MB/s),但ostree pull
速度奇慢无比(只有10KB/s),尽管从netstat
看到两者连的是同一服务器(fastly香港节点 2a04:4e42:12::729)。还不知道问题出在哪里,有什么调试建议吗。
我尝试了一下发现,我这边
flatpak install
的速度正常(大约 5MB/s),但ostree pull
速度奇慢无比(只有10KB/s),尽管从netstat
看到两者连的是同一服务器(fastly香港节点 2a04:4e42:12::729)。还不知道问题出在哪里,有什么调试建议吗。
不知道是不是ipv6的问题。我发现国内到国外的ipv6连接速度就是奇慢无比,经常路由会绕远路。而且很多传统的针对国内线路优化到了ipv6就毫无用处,甚至更慢。不确定是不是这个问题。
总之就是,为何国内开始大力推广ipv6了,因为……你懂得,那啥研制成功了呗
你对IPv6的偏见是由于国内很多网站、运营商技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。
嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。
你对IPv6的偏见是由于国内很多网站技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。
嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。
国内ipv6线路没啥问题,我就是说的是国外的ipv6的域名网站。我这边是电信线路。用traceroute追踪路由的时候就发现ipv6地址路由跳数更多,ping延迟更高,网站响应更慢,丢包率更是高的吓人。国内的ipv6线路确实优化不咋地,体验非常渣。倒不是我对ipv6有偏见,相反我非常期望ipv6能普及。
扯远了,如果不是ipv6线路的问题我暂时就想不出什么原因了
我看过traceroute,到fastly香港走的是AS23911->AS3491->AS54113,没有绕路,40ms延迟,没有丢包。所以应该不是丢包造成的速度慢。
@abcfy2 建议体验一下教育网的 IPv6,值得拥有
你对IPv6的偏见是由于国内很多网站技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。 嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。
国内ipv6线路没啥问题,我就是说的是国外的ipv6的域名网站。我这边是电信线路。用traceroute追踪路由的时候就发现ipv6地址路由跳数更多,ping延迟更高,网站响应更慢,丢包率更是高的吓人。国内的ipv6线路确实优化不咋地,体验非常渣。倒不是我对ipv6有偏见,相反我非常期望ipv6能普及。
扯远了,如果不是ipv6线路的问题我暂时就想不出什么原因了
只是当前运营商的 peer 没有和 v4 一样做得那么多而已,和优化不优化没什么关系。此外,路由跳数和网络体验也完全没有关系。
@abcfy2 建议体验一下教育网的 IPv6,值得拥有
求分享教育网的VPN,我也想体验一下国家科研力量的强大:laughing:
抓包分析发现 ostree pull 实际上是用 HTTP 一个一个的下载 commit 文件,即使复用TCP连接,这样的下载也太慢了,相当于每下载一个文件就需要一次 RTT。Git 的 Smart Protocol 就高明很多,是在服务器先 pack 再下载的。
像 flathub 这么大的仓库用这种方法几乎不可能 pull 下来。
感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要
flatpak build-update-repo $PWD
这步吗?
需要的,这样这个ostree仓库才能成为一个flatpak的仓库。要注意的是上述步骤没有考虑认证的问题,添加这样的仓库需要使用--no-gpg-verify参数才行。
https://github.com/flathub/flathub/issues/813
感觉还是指望官方增加flathub的国内CDN节点更靠谱点,官方说flathub仓库已经超过1TB了,tuna确定要全部吃下来吗?
感觉还是指望官方增加flathub的国内CDN节点更靠谱点,官方说flathub仓库已经超过1TB了,tuna确定要全部吃下来吗?
如果包括全部提交记录的话可能有这么多,但是ostree可以只同步最新的一次提交,flathub上很多软件(特别是不开源的软件)都是需要安装后再下载本体的,其本身不是很大,大的主要是那几个运行时,但是这些运行时加起来也应该不会超过10个G。
现在的问题不是容量,而是ostree pull的机制不可能把版本库拖下来,就算是最新版本所有软件都不可能。
看官方的那个issue,似乎flathub官方也有意于提高中国用户的访问体验,不知道是不是可以和官方取得沟通,让他们提供一个比较方便的同步方案
现在的问题不是容量,而是ostree pull的机制不可能把版本库拖下来,就算是最新版本所有软件都不可能。
之前我挂ss用ostree从flathub同步了部分软件,速度其实跟直接使用flatpak安装差不多的,不过现在我的ss挂了,所以也测试不了速度了。
感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要
flatpak build-update-repo $PWD
这步吗?需要的,这样这个ostree仓库才能成为一个flatpak的仓库。要注意的是上述步骤没有考虑认证的问题,添加这样的仓库需要使用--no-gpg-verify参数才行。
GPG 密钥的话前文已经有解决办法了。 至于镜像的问题现在看上去似乎只有寻求官方的合作了。
之前我挂ss用ostree从flathub同步了部分软件,速度其实跟直接使用flatpak安装差不多的,不过现在我的ss挂了,所以也测试不了速度了。
倒是这一点似乎还存疑,谁的网络环境较好可以试一下?我个人是完全无法访问 fastly 了。
学校到fastly的链路还不错,我开了一个带cache的反代: https://mirrors.tuna.tsinghua.edu.cn/flathub/repo
这只是个临时措施,可能会受网络质量和CDN访问量限制。长远来看还得靠官方提供其它同步的途径。
学校到fastly的链路还不错,我开了一个带cache的反代: https://mirrors.tuna.tsinghua.edu.cn/flathub/repo
这只是个临时措施,可能会受网络质量和CDN访问量限制。长远来看还得靠官方提供其它同步的途径。
感觉没什么用,刷新缓存和install的时候还是会重定向到fastly.net日本东京节点上
EDIT: 好像是因为refresh缓存之后,remote地址又会被自动改到https://dl.flathub.org/repo/。
flatpak remotes -d结果又会改回去
我发现它可能会flatpakref文件,然后就找回官方的地址了。所以并不能直接镜像过来。
另外 @shankerwangmiao 指出 flathub 上的一些软件是有版权问题的,镜像存在合规性问题。
所以我们暂时不考虑镜像flathub了。
Leaving it here for posterity: https://github.com/flathub/flathub/issues/813#issuecomment-624560834
The server above is hosted at Linode's Fremont DC which is supposedly not terrible for users from China. It's not ideal as Flatpak enforces an URL by putting it into the summary file (for migrating from the old URL); that's why user needs to modify local config. We would probably need to drop the redirect setting on Flathub side.
@z4yx Mirroring entire Flathub does not sound efficient as it's really lots of data. The way Flathub itself is setup is that Fastly CDN connects to one of our caching servers. Is it something that could be configured on TUNA infrastructure? On our side it's basically nginx proxy with proxy_cache configured. Actively used data is between 40-70GB.
It's important to us to make Flathub available everywhere, but there's limited number of things I can do "from here".
@barthalion I am not affiliated with TUNA but let me help translate things here:
flathub 上的一些软件是有版权问题的,镜像存在合规性问题。
There are some software with license issues on flathub; mirroring it might increase compliance risks.
一般不使用反向代理的方式提供镜像 in #741
They don't usually use reverse proxy to set up the mirror. NGINX as you mentioned is a reverse proxy.
There are some software with license issues on flatpak; mirroring it might increase compliance risks.
I understand the concern. Flathub is similar to Arch Linux in this regard. If license allows redistribution, we do that. For things like Spotify or Skype (proprietary software we are not legally allowed to ship), files are downloaded on install by flatpak, without Flathub involved.
般不使用反向代理的方式提供镜像 in #741
Understood, just wanted to clarify. Thanks!
For things like Spotify or Skype (proprietary software we are not legally allowed to ship), files are downloaded on install by flatpak, without Flathub involved.
So mirroring Flathub doesn't have legal problem? That's pretty cool 😄 However, I don't think TUNA will mirror it using a reverse proxy, which is sad. Maybe volunteers can get together and provide a mirror site by themselves. (btw I'm not affiliated with TUNA)
Glad to see that Shanghai Jiaotong University (SJTUG Zhiyuan Mirror) provides this: https://mirrors.sjtug.sjtu.edu.cn/docs/flathub
项目名称与简介(Project Intro.)
Flathub From its website:
(懒得翻译了,躺)
上游地址与镜像方法(How to Mirror)
https://dl.flathub.org/repo/
It's based on OSTree, so it may be possible to mirror it by using the
ostree
command. 它的仓库基于 OSTree,所以有可能使用ostree
来镜像。See Mirroring repositories for more information.
其他信息(Other)
This idea hasn't been tested yet, so I'd like to discuss it. 目前未经测试,仅仅提出一个想法。
这个 issue 用英语写了一部分是为了更方便得到帮助,也算是一种练习吧(?) 有错请指出,谢谢了:)