利用Julia PkgServer加速下载 (After Julia v1.4.0)

Julia v1.4.0 之后添加了一个PkgServer的功能,通过设置环境变量JULIA_PKG_SERVER可以来主动选择下载服务器(也就是镜像站)

目前官方提供了两个服务器:

  • https://pkg.julialang.org 位于美国
  • https://kr.pkg.julialang.org 位于韩国首尔

暂时还没有公开的第三方镜像站

任意选择其中一个即可,例如:

julia> ENV["JULIA_PKG_SERVER"] = "https://kr.pkg.julialang.org"
"https://kr.pkg.julialang.org"

julia> versioninfo()
Julia Version 1.4.0-rc1.0
Commit b0c33b0cf5 (2020-01-23 17:23 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.0.0)
  CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)
Environment:
  JULIA_PKG_SERVER = https://kr.pkg.julialang.org

也可以采用其他的方式来设置环境变量,只需要确保versioninfo()的结果里有成功设置JULIA_PKG_SERVER即可

如果对于自建PkgServer感兴趣,可以参考 https://github.com/JuliaPackaging/PkgServer.jl

早期的一些测试结果可以在 Julia 1.4-Dev Pkg服务器使用测试 看到


@jun @Roger 能否把这个置顶一下来让更多的人看到

1赞

Windows可能有一个bug需要等修复: https://github.com/JuliaLang/Pkg.jl/issues/1642

好用,急切的等待1.4正式发布以及国内镜像建成 :+1:

我的这个问题是不是目前解决不了啊?

‘’’
设置“SecurityProtocol”时发生异常:“由于枚举值无效,无法将空值转换为类型“System.Net.SecurityProtocol
Type”。请指定以下枚举值之一,然后重试。可能的枚举值为“Ssl3、Tls”。
‘’’

1赞

感谢你提供的报错信息,现在问题被诊断出来了 并没有

https://github.com/JuliaLang/Pkg.jl/issues/1642#issuecomment-586710852 如果顺利的话能在1.4版本中看到修复 :slight_smile:

1赞

1.4什么时候公布啊?快点啊,等不及了! :grinning:

你能提供一下你的系统, powershell和.Net Framework的版本么,另外能否验证一下TLSv1.2是否开启了?

话说,韩国人的那个服务器是怎么在维护?个人?学校?公司?

staticfloat在维护的,应该同属于 Julialang.org

julia-1.4-rc2自己搭的pkgserver仍然不行。

emmm 你先看看能否正常下载PkgServer的内容

curl http://45.77.28.188:8000
# 如果正常的话会有下述结果
/registry/23338594-aafe-5451-b93e-139f81909106/d7e8dc1011c6c9a0f23fe0304fe1737df0383f7b

如果没有curl之类的话,用HTTP来下载看看

julia> using HTTP

julia> HTTP.get("http://45.77.28.188:8000/registries")

如果能下载PkgServer的内容但是没有办法在Julia里使用的话,大概就依然还是不行…

能下载到。

自己搭的加上ssl就好用了,看起来就是win的tls原因。

2赞

在正式版和国内镜像出来前就不升级1.4了,1.3.1先学着

我就更奇怪了,我安装什么都提示ERROR: KeyError: key "Expat_jll" not found

julia> ENV["JULIA_PKG_SERVER"] = "https://kr.pkg.julialang.org"
"https://kr.pkg.julialang.org"

julia> versioninfo()
Julia Version 1.4.0-rc2.0
Commit b99ed72c95 (2020-02-24 16:51 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Genuine Intel(R) CPU 0000 @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)
Environment:
  JULIA_PKG_SERVER = https://kr.pkg.julialang.org

(@v1.4) pkg> up
   Updating registry at `C:\Users\WeiM\.julia\registries\General`
┌ Warning: Some registries failed to update:
│     — `C:\Users\WeiM\.julia\registries\General` — registry dirty
└ @ Pkg.Types D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Types.jl:1122
   Updating `C:\Users\WeiM\.julia\environments\v1.4\Project.toml`
  [ad839575] + Blink v0.12.1
  [9b87118b] + PackageCompiler v0.6.5
  [e0fc9d43] + PkgMirrors v1.3.0
  [58dd65bb] + Plotly v0.3.0
  [f0f68f2c] + PlotlyJS v0.13.1
  [91a5bcdd] + Plots v0.29.0
  [d330b81b] + PyPlot v2.8.2
  [b8865327] + UnicodePlots v1.1.0
   Updating `C:\Users\WeiM\.julia\environments\v1.4\Manifest.toml`
  [bf4720bc] + AssetRegistry v0.1.0
  [9e28174c] + BinDeps v1.0.0
  [b99e7846] + BinaryProvider v0.5.8
  [ad839575] + Blink v0.12.1
  [e1450e63] + BufferedStreams v1.0.0
  [3da002f7] + ColorTypes v0.9.1
  [5ae59095] + Colors v0.11.2
  [34da2185] + Compat v2.2.0
  [8f4d0f93] + Conda v1.3.0
  [d38c429a] + Contour v0.5.1
  [9a962f9c] + DataAPI v1.1.0
  [864edb3b] + DataStructures v0.17.9
  [e2d170a0] + DataValueInterfaces v1.0.0
  [ffbed154] + DocStringExtensions v0.8.1
  [c87230d0] + FFMPEG v0.2.4
  [53c48c17] + FixedPointNumbers v0.7.1
  [de31a74c] + FunctionalCollections v0.5.0
  [28b8d3ca] + GR v0.46.0
  [4d00f742] + GeometryTypes v0.7.7
  [cd3eb016] + HTTP v0.8.8
  [0862f596] + HTTPClient v0.2.1
  [9fb69e20] + Hiccup v0.2.2
  [83e8ac13] + IniFile v0.5.0
  [82899510] + IteratorInterfaceExtensions v1.0.0
  [97c1335a] + JSExpr v0.5.1
  [682c06a0] + JSON v0.21.0
  [b964fa9f] + LaTeXStrings v1.0.3
  [50d2b5c4] + Lazy v0.14.0
  [b27032c2] + LibCURL v0.5.2
  [522f3ed2] + LibExpat v0.6.1
  [2ec943e9] + Libz v1.0.1
  [1914dd2f] + MacroTools v0.5.4
  [739be429] + MbedTLS v0.7.0
  [442fdcdd] + Measures v0.3.1
  [e1d29d7a] + Missings v0.4.3
  [ffc61752] + Mustache v1.0.0
  [a975b10e] + Mux v0.7.1
  [77ba4419] + NaNMath v0.3.3
  [510215fc] + Observables v0.2.3
  [bac558e1] + OrderedCollections v1.1.0
  [9b87118b] + PackageCompiler v0.6.5
  [69de0a69] + Parsers v0.3.11
  [fa939f87] + Pidfile v1.1.0
  [e0fc9d43] + PkgMirrors v1.3.0
  [ccf2f8ad] + PlotThemes v1.0.1
  [995b91a9] + PlotUtils v0.6.3
  [58dd65bb] + Plotly v0.3.0
  [a03496cd] + PlotlyBase v0.3.0
  [f0f68f2c] + PlotlyJS v0.13.1
  [91a5bcdd] + Plots v0.29.0
  [438e738f] + PyCall v1.91.2
  [d330b81b] + PyPlot v2.8.2
  [3cdcf5f2] + RecipesBase v0.8.0
  [189a3867] + Reexport v0.2.0
  [ae029012] + Requires v1.0.1
  [992d4aef] + Showoff v0.3.1
  [a2af1166] + SortingAlgorithms v0.3.1
  [90137ffa] + StaticArrays v0.12.1
  [2913bbd2] + StatsBase v0.32.0
  [3783bdb8] + TableTraits v1.0.0
  [bd369af6] + Tables v0.2.11
  [30578b45] + URIParser v0.4.0
  [b8865327] + UnicodePlots v1.1.0
  [81def892] + VersionParsing v1.2.0
  [0f1e0344] + WebIO v0.8.13
  [104b5d7c] + WebSockets v1.5.2
  [cc8bc4a8] + Widgets v0.6.2
  [c17dfb99] + WinRPM v0.4.3
  [2a0f44e3] + Base64
  [ade2ca70] + Dates
  [8bb1440f] + DelimitedFiles
  [8ba89e20] + Distributed
  [7b1f6079] + FileWatching
  [b77e0a4c] + InteractiveUtils
  [76f85450] + LibGit2
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [a63ad114] + Mmap
  [44cfe95a] + Pkg
  [de0858da] + Printf
  [3fa0cd96] + REPL
  [9a3f8284] + Random
  [ea8e919c] + SHA
  [9e88b42a] + Serialization
  [1a1011a3] + SharedArrays
  [6462fe0b] + Sockets
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [8dfed614] + Test
  [cf7118a7] + UUIDs
  [4ec0a83e] + Unicode
ERROR: KeyError: key "Expat_jll" not found
Stacktrace:
 [1] getindex at .\dict.jl:477 [inlined]
 [2] #46 at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\manifest.jl:209 [inlined]
 [3] _all(::Pkg.Types.var"#46#49"{Dict{String,Bool}}, ::Dict{String,Base.UUID}, ::Colon) at .\reduce.jl:820
 [4] all at .\reduce.jl:815 [inlined]
 [5] destructure(::Dict{Base.UUID,Pkg.Types.PackageEntry}) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\manifest.jl:209
 [6] write_manifest at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\manifest.jl:227 [inlined]
 [7] write_manifest at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\manifest.jl:225 [inlined]
 [8] write_env(::Pkg.Types.EnvCache; update_undo::Bool) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Types.jl:1294
 [9] write_env at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Types.jl:1293 [inlined]
 [10] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}, ::Pkg.Types.UpgradeLevel) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Operations.jl:1171
 [11] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, update_registry::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\API.jl:224
 [12] up at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\API.jl:201 [inlined]
 [13] #up#47 at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\API.jl:196 [inlined]
 [14] up(::Array{Pkg.Types.PackageSpec,1}) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\API.jl:196
 [15] do_cmd!(::Pkg.REPLMode.Command, ::REPL.LineEditREPL) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\REPLMode\REPLMode.jl:403
 [16] do_cmd(::REPL.LineEditREPL, ::String; do_rethrow::Bool) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\REPLMode\REPLMode.jl:381
 [17] do_cmd at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\REPLMode\REPLMode.jl:376 [inlined]
 [18] (::Pkg.REPLMode.var"#24#27"{REPL.LineEditREPL,REPL.LineEdit.Prompt})(::REPL.LineEdit.MIState, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Bool) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\REPLMode\REPLMode.jl:542
 [19] #invokelatest#1 at .\essentials.jl:712 [inlined]
 [20] invokelatest at .\essentials.jl:711 [inlined]
 [21] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\REPL\src\LineEdit.jl:2354
 [22] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\REPL\src\REPL.jl:1055
 [23] run_repl(::REPL.AbstractREPL, ::Any) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\REPL\src\REPL.jl:206
 [24] (::Base.var"#764#766"{Bool,Bool,Bool,Bool})(::Module) at .\client.jl:383
 [25] #invokelatest#1 at .\essentials.jl:712 [inlined]
 [26] invokelatest at .\essentials.jl:711 [inlined]
 [27] run_main_repl(::Bool, ::Bool, ::Bool, ::Bool, ::Bool) at .\client.jl:367
 [28] exec_options(::Base.JLOptions) at .\client.jl:305
 [29] _start() at .\client.jl:484

话说原来那个不挂代理的build速度真是强势劝退。

试着重建registry吧 – 把C:\Users\WeiM\.julia\registries\General删了试试

1赞

谢谢!能用了,可能是我很多版本的Julia冲突了?不过似乎这个韩国节点的也不怎么快,我人山西,还是0.1Mbps速度高速下载,还是把我路由器上的代理打开吧
期待1.4发布,并且能用大陆的节点~

:joy: :joy: :joy:

眼下Julia 1.4.0已经正式发布,我用我在美国西海岸的土豆服务器创建了一个镜像站
在中国的新安装的Centos 7测试了一下,使用]add Plots,安装时的下载阶段确实很快,速度有10Mb/s以上,但是Build阶段似乎仍然不会从我的服务器上下载数据,大约以0.05Mb/s的速度高速下载
大家喜欢可以测试一下,注意我的镜像可能随时移除,因为我的服务器很便宜配置很低,还要跑其他服务。
ENV["JULIA_PKG_SERVER"] = "https://blog.iyu.icu/myjuliapkgserver"

5赞

京ICP备17009874号-2