tuna / issues

Code Unrelated Issues
362 stars 28 forks source link

镜像请求:crates.io 的内容(已镜像了索引) #941

Closed abcfy2 closed 9 months ago

abcfy2 commented 4 years ago

发生了什么(What happened)

crates.io镜像速度很慢,没有加速效果:

cargo install deno
#... 漫长的下载等待 ...

期望的现象(What you expected to happen)

cargo install可以快速下载

如何重现(How to reproduce it)

cargo install shadowsocks-rust
cargo install deno

任意一个cargo install几乎都是下载时间占多数。

看了下官方文档: https://github.com/rust-lang/crates.io/blob/master/docs/MIRROR.md

官方文档说如果clone了crates.io仓库之后,还应该修改config.json,怀疑是不是没有修改config.json,导致下载包的时候还是走了原下载站,速度奇慢无比。

另外还发现了一个简单的工具可以镜像crates.io,不知道是否能直接用: https://crates.io/crates/crates-mirror

jiegec commented 4 years ago

配置了 https://mirrors.tuna.tsinghua.edu.cn/help/crates.io-index.git/

abcfy2 commented 4 years ago

肯定是配置了啊,不然也不会到这里开issue了

abcfy2 commented 4 years ago

确认了一下,就是没改config.json:

git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git
 cat crates.io-index/config.json
{
  "dl": "https://crates.io/api/v1/crates",
  "api": "https://crates.io"
}
abcfy2 commented 4 years ago

中科大的镜像就没问题,看了下他们是改过的:

https://mirrors.ustc.edu.cn/crates.io-index/config.json

jiegec commented 4 years ago

我们目前只镜像了 index,没有镜像 crates.io 上的内容。

abcfy2 commented 4 years ago

是否考虑缓存crates.io呢?只镜像Index没太大用,那个就算走官方也不会太慢,update index的过程就是git clone一下github的仓库,下载才是最耗时间的

dotkrnl commented 4 years ago

根据 #741,镜像站原则上不接受使用反向代理的方式提供镜像。中科大镜像站使用了反向代理缓冲。根据我的理解,crates.io 似乎暂时没有提供有效的非反向代理的镜像方式。我们可能暂时无法提供内容的镜像。

skyzh commented 3 years ago

我们这边写了一个全量同步 static.crates.io 的脚本,但是 SJTUG 镜像空间不太够,希望贵镜像站有机会试用一下(

https://github.com/sjtug/mirror-clone/pull/9

cargo run --release -- crates_io /srv/data/crates.io-index /srv/data/crates.io/crates https://static.crates.io/crates
skyzh commented 3 years ago

cc @dotkrnl @jiegec

Harry-Chen commented 3 years ago

@jiegec 目前是否可能部署?我查看了官方示例,指出了在建立 crates.io-index 镜像的时候,应该修改里面的 URL

Harry-Chen commented 3 years ago

并且 static.crates.io 其实在 S3 上,是否可能考虑在 OpenTUNA 尝试直接镜像

jiegec commented 3 years ago

感觉还是需要跑一个后端?

skyzh commented 3 years ago

感觉还是需要跑一个后端?

static.crates.io 用普通的文件服务器就能 serve

jiegec commented 3 years ago

我看配置里有两个 url:

{
    "dl": "https://crates-io.proxy.ustclug.org/api/v1/crates",
    "api": "https://crates.io/"
}

上面那个就是 static.crates.io 么?

skyzh commented 3 years ago
{
  "dl": "https://mirrors.sjtug.sjtu.edu.cn/static.crates.io/crates/{crate}/{crate}-{version}.crate",
  "api": "https://crates.io/"
}

是的,如果不设置的话,应该默认是 https://static.crates.io/crates/{crate}/{crate}-{version}.crate.

skyzh commented 3 years ago

首次同步可以考虑从我们的对象存储上拉 https://s3.jcloud.sjtu.edu.cn/899a892efef34b1b944a19981040f55b-oss01/crates.io/crates/{crate}/{crate}-{version}.crate,目前 https://mirrors.sjtug.sjtu.edu.cn/static.crates.io 是反向代理。

shankerwangmiao commented 3 years ago

大概需要多少存储?

skyzh commented 3 years ago

大概需要多少存储?

<= 100GB, 300k 个文件

Harry-Chen commented 9 months ago

目前 crates 的稀疏镜像使用体验较好,暂无必要继续全量镜像。