项目地址:GitHub - sunoru/PkgMirrors.jl: Use alternative mirrors to manage your packages for Julia.
网络不稳定对在国内的用户来说是个很严重的问题,直接影响到了使用甚至安装 Julia 的体验。最近一段时间我尝试使用镜像站做源的方式解决这个问题,在浙江大学镜像站上搭建了一个有着 Julia 各个发行版以及各个库的镜像,PkgMirrors.jl
即是这个镜像的客户端。
具体的介绍我就贴一下中文版的 README 吧~
PkgMirrors
在 Julia 中使用镜像站
PkgMirrors.jl
是一个用镜像站来加速下载的客户端。比如在中国在访问 GitHub 时经常会很慢,可以使用这个库来帮你安装其他库。
目前支持的镜像站(参见镜像站列表):
- 浙江大学开源镜像站(https://mirrors.zju.edu.cn/julia/)
安装
注意:这个库只能与 Pkg3 一起使用,也就是说最低支持的 Julia 版本是 0.7。
有很多种安装方式:
julia> # 输入 "]" 以进入包管理器的 REPL 模式
(v1.0) pkg> add PkgMirrors # 最官方的安装方式
(v1.0) pkg> add https://github.com/sunoru/PkgMirrors.jl.git # 从源代码安装
(v1.0) pkg> add https://mirrors.zju.edu.cn/julia/PkgMirrors.jl.git@v1.0.0 # 从镜像站安装(推荐)
显然,既然你想使用这个库了,意味着你也会希望能从镜像站安装这个库本身。(虽然可能还是会从 GitHub 上克隆一遍官方的 Registry)
使用
第一次使用 PkgMirrors.jl
时,需要指定所使用的镜像:
julia> import PkgMirrors
julia> PkgMirrors.availables() # 列出所有可用的镜像。
1-element Array{String,1}:
"ZJU"
julia> PkgMirrors.setmirror("ZJU") # 设定当前镜像。
[ Info: Updating mirror information...
[ Info: PkgMirror ZJU activated.
PkgMirrors.PkgMirror("ZJU", "https://mirrors.zju.edu.cn/julia")
PkgMirrors.jl
会记住你所选择的镜像,因此以后无需重新调用 setmirror
:
julia> import PkgMirrors
[ Info: Using saved mirror: ZJU (https://mirrors.zju.edu.cn/julia)
[ Info: Updating mirror information...
[ Info: PkgMirror ZJU activated.
选择镜像之后会自动被激活,然后你就可以用标准库中的 Pkg
来安装和更新软件包了。比如说:
julia> # Type "]" to enter Pkg REPL-mode.
(v1.0) pkg> update
Updating registry at `C:\Users\sunoru\.julia\registries\General`
Updating git-repo `https://mirrors.zju.edu.cn/julia/registries/General.git`
Resolving package versions...
Updating `C:\Users\sunoru\.julia\environments\v1.0\Project.toml`
[no changes]
Updating `C:\Users\sunoru\.julia\environments\v1.0\Manifest.toml`
[no changes]
(v1.0) pkg> add RandomNumbers
Resolving package versions...
Updating `C:\Users\sunoru\.julia\environments\v1.0\Project.toml`
[e6cf234a] + RandomNumbers v1.0.1
Updating `C:\Users\sunoru\.julia\environments\v1.0\Manifest.toml`
[e6cf234a] + RandomNumbers v1.0.1
你可以发现 Julia 语言官方的 General 登记簿(Registry)的 URL 已经被设定为你选择的镜像。
如果一个软件包不在你所选择的镜像上,则会自动通过 git clone
来下载。
当你退出 Julia 时 PkgMirrors.jl
会自动停用(比如把在硬盘上对 URL 的修改全都撤销),以免你下次不想使用它时出问题:
julia> exit()
[ Info: PkgMirror ZJU deactivated.
你也可以手动停用镜像站,或者使用如下语句清除本地缓存的信息:
julia> PkgMirrors.deactivate()
[ Info: PkgMirror ZJU deactivated.
julia> PkgMirrors.clear()
[ Info: Cache clear.
新的镜像?
若想搭建 Julia 软件包的镜像站,请参见 julia-mirror。欢迎在本 repo 中提 issue 或是发起 pull request 来补充镜像列表。
问题
目前已知的问题:
PkgMirrors.jl
无法处理 General 登记簿以外的软件包(虽然现在唯一的镜像站也并不提供其它登记簿)。
如果有任何疑问,欢迎来提 issue 或是在 Discourse 论坛(英文或中文的社区都可以)里发表问题的同时 @sunoru 。