tuna / issues

Code Unrelated Issues
362 stars 28 forks source link

[Mirror Request] Flathub #523

Closed ZeroAurora closed 4 years ago

ZeroAurora commented 5 years ago

项目名称与简介(Project Intro.)

Flathub From its website:

Flathub aims to be the place to get and distribute apps for Linux. It is powered by Flatpak which allows Flathub apps to run on almost any Linux distribution.

(懒得翻译了,躺)

上游地址与镜像方法(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 用英语写了一部分是为了更方便得到帮助,也算是一种练习吧(?) 有错请指出,谢谢了:)

ZeroAurora commented 5 years ago

刚刚发现一个问题,这玩意没我想象的那么简单。每个包的描述文件都包含着 repo 的地址,导致就算镜像了,运行时依赖还是得从原 repo 下载。具体睡醒再说吧

scateu commented 5 years ago

拿sed批量换一下?

我之前给pybombs做镜像的时候就是这么办的...

https://mirrors.tuna.tsinghua.edu.cn/help/pybombs/

-- Wang Kang

On Sat, 9 Mar 2019, ZeroAurora wrote:

刚刚发现一个问题,这玩意没我想象的那么简单。每个包的描述文件都包含着原 repo 的地址,导致就算镜像了,运行时依赖还是得从原 repo 下载。具体睡醒再说吧,

ZeroAurora commented 5 years ago

先前测试了一下,似乎可行,但是好像要 GPG 密钥,所以没接着试……我再试试看,把 log 贴一份

ZeroAurora commented 5 years ago
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,所以希望能得到帮忙

ZeroAurora commented 5 years ago

Maybe this may help https://pulpproject.org/

sylecn commented 5 years ago
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
wsgalaxy commented 4 years ago

flatpak的仓库其实是一个包含了一些flatpak元数据的ostree仓库,创建flathub的ostree仓库镜像的方法:

真心希望能给flathub作一个镜像,flatpak是linux下一代应用分发方式,flathub是flatpak官方的应用市场,但是现在国内对flathub的访问几乎处于不可用状态,导致有很多应用想往flatpak上移植都很不方便。我把网易云音乐和shadowsocks-qt5往flatpak上移植,并发布在了flathub上,这些应用在我将系统从fedora29一直更新到fedora31都一直工作的很好,而原始的rpm版本都随着系统更新不再可用了,flatpak的优势是显而易见的。 @scateu

wsgalaxy commented 4 years ago

ostree的设计类似于git,原生支持增量更新,所以每次同步镜像的时候执行一次ostree pull --repo=$PWD --mirror flathub就行了。

abcfy2 commented 4 years ago

希望这个镜像能尽快实现。我发现最近flathub用fastly.net的CDN了,国内全部解析到日本节点了,彻底没法用了。国内基本上把日本节点的ip屏蔽了个干净

z4yx commented 4 years ago

感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要 flatpak build-update-repo $PWD 这步吗?

z4yx commented 4 years ago

我尝试了一下发现,我这边flatpak install的速度正常(大约 5MB/s),但ostree pull速度奇慢无比(只有10KB/s),尽管从netstat看到两者连的是同一服务器(fastly香港节点 2a04:4e42:12::729)。还不知道问题出在哪里,有什么调试建议吗。

abcfy2 commented 4 years ago

我尝试了一下发现,我这边flatpak install的速度正常(大约 5MB/s),但ostree pull速度奇慢无比(只有10KB/s),尽管从netstat看到两者连的是同一服务器(fastly香港节点 2a04:4e42:12::729)。还不知道问题出在哪里,有什么调试建议吗。

不知道是不是ipv6的问题。我发现国内到国外的ipv6连接速度就是奇慢无比,经常路由会绕远路。而且很多传统的针对国内线路优化到了ipv6就毫无用处,甚至更慢。不确定是不是这个问题。

总之就是,为何国内开始大力推广ipv6了,因为……你懂得,那啥研制成功了呗

z4yx commented 4 years ago

你对IPv6的偏见是由于国内很多网站、运营商技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。

嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。

abcfy2 commented 4 years ago

你对IPv6的偏见是由于国内很多网站技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。

嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。

国内ipv6线路没啥问题,我就是说的是国外的ipv6的域名网站。我这边是电信线路。用traceroute追踪路由的时候就发现ipv6地址路由跳数更多,ping延迟更高,网站响应更慢,丢包率更是高的吓人。国内的ipv6线路确实优化不咋地,体验非常渣。倒不是我对ipv6有偏见,相反我非常期望ipv6能普及。

扯远了,如果不是ipv6线路的问题我暂时就想不出什么原因了

z4yx commented 4 years ago

我看过traceroute,到fastly香港走的是AS23911->AS3491->AS54113,没有绕路,40ms延迟,没有丢包。所以应该不是丢包造成的速度慢。

jiegec commented 4 years ago

@abcfy2 建议体验一下教育网的 IPv6,值得拥有

Harry-Chen commented 4 years ago

你对IPv6的偏见是由于国内很多网站技术不佳导致IPv6访问体验不好,事实上教育网很早就开始普及IPv6,体验非常好,出国也不怎么受限制。 嗯OT了,回到这个问题,我测试过走IPv4,速度一样慢。

国内ipv6线路没啥问题,我就是说的是国外的ipv6的域名网站。我这边是电信线路。用traceroute追踪路由的时候就发现ipv6地址路由跳数更多,ping延迟更高,网站响应更慢,丢包率更是高的吓人。国内的ipv6线路确实优化不咋地,体验非常渣。倒不是我对ipv6有偏见,相反我非常期望ipv6能普及。

扯远了,如果不是ipv6线路的问题我暂时就想不出什么原因了

只是当前运营商的 peer 没有和 v4 一样做得那么多而已,和优化不优化没什么关系。此外,路由跳数和网络体验也完全没有关系。

abcfy2 commented 4 years ago

@abcfy2 建议体验一下教育网的 IPv6,值得拥有

求分享教育网的VPN,我也想体验一下国家科研力量的强大:laughing:

z4yx commented 4 years ago

抓包分析发现 ostree pull 实际上是用 HTTP 一个一个的下载 commit 文件,即使复用TCP连接,这样的下载也太慢了,相当于每下载一个文件就需要一次 RTT。Git 的 Smart Protocol 就高明很多,是在服务器先 pack 再下载的。

image

像 flathub 这么大的仓库用这种方法几乎不可能 pull 下来。

wsgalaxy commented 4 years ago

感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要 flatpak build-update-repo $PWD 这步吗?

需要的,这样这个ostree仓库才能成为一个flatpak的仓库。要注意的是上述步骤没有考虑认证的问题,添加这样的仓库需要使用--no-gpg-verify参数才行。

abcfy2 commented 4 years ago

https://github.com/flathub/flathub/issues/813

感觉还是指望官方增加flathub的国内CDN节点更靠谱点,官方说flathub仓库已经超过1TB了,tuna确定要全部吃下来吗?

wsgalaxy commented 4 years ago

flathub/flathub#813

感觉还是指望官方增加flathub的国内CDN节点更靠谱点,官方说flathub仓库已经超过1TB了,tuna确定要全部吃下来吗?

如果包括全部提交记录的话可能有这么多,但是ostree可以只同步最新的一次提交,flathub上很多软件(特别是不开源的软件)都是需要安装后再下载本体的,其本身不是很大,大的主要是那几个运行时,但是这些运行时加起来也应该不会超过10个G。

z4yx commented 4 years ago

现在的问题不是容量,而是ostree pull的机制不可能把版本库拖下来,就算是最新版本所有软件都不可能。

abcfy2 commented 4 years ago

看官方的那个issue,似乎flathub官方也有意于提高中国用户的访问体验,不知道是不是可以和官方取得沟通,让他们提供一个比较方便的同步方案

wsgalaxy commented 4 years ago

现在的问题不是容量,而是ostree pull的机制不可能把版本库拖下来,就算是最新版本所有软件都不可能。

之前我挂ss用ostree从flathub同步了部分软件,速度其实跟直接使用flatpak安装差不多的,不过现在我的ss挂了,所以也测试不了速度了。

ZeroAurora commented 4 years ago

感谢 @wsgalaxy 提供详细步骤。请问每次同步后还需要 flatpak build-update-repo $PWD 这步吗?

需要的,这样这个ostree仓库才能成为一个flatpak的仓库。要注意的是上述步骤没有考虑认证的问题,添加这样的仓库需要使用--no-gpg-verify参数才行。

GPG 密钥的话前文已经有解决办法了。 至于镜像的问题现在看上去似乎只有寻求官方的合作了。

之前我挂ss用ostree从flathub同步了部分软件,速度其实跟直接使用flatpak安装差不多的,不过现在我的ss挂了,所以也测试不了速度了。

倒是这一点似乎还存疑,谁的网络环境较好可以试一下?我个人是完全无法访问 fastly 了。

z4yx commented 4 years ago

学校到fastly的链路还不错,我开了一个带cache的反代: https://mirrors.tuna.tsinghua.edu.cn/flathub/repo

这只是个临时措施,可能会受网络质量和CDN访问量限制。长远来看还得靠官方提供其它同步的途径。

abcfy2 commented 4 years ago

学校到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结果又会改回去

z4yx commented 4 years ago

我发现它可能会flatpakref文件,然后就找回官方的地址了。所以并不能直接镜像过来。

另外 @shankerwangmiao 指出 flathub 上的一些软件是有版权问题的,镜像存在合规性问题。

所以我们暂时不考虑镜像flathub了。

barthalion commented 4 years ago

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".

phy25 commented 4 years ago

@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.

barthalion commented 4 years ago

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!

ZeroAurora commented 4 years ago

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)

dqwyy commented 3 years ago

Glad to see that Shanghai Jiaotong University (SJTUG Zhiyuan Mirror) provides this: https://mirrors.sjtug.sjtu.edu.cn/docs/flathub