https://mp.weixin.qq.com/s/DyegFcNEjieJspc_3B5G6w
Julia PkgServer 鏡像服務
原創 Johnny Chen JuliaCN 昨天
長久以來,受國內網絡環境影響,困擾國內 Julia 用戶的問題之一便是如何穩定地安裝包。最近我們在 BFSU 北外開源鏡像站搭建了 PkgServer 鏡像服務,該服務有望極大地緩解以往國內用戶安裝包過程中遇到的網絡問題。(更多信息可以點擊頁面底部的閱讀原文前往社區查看)
Julia 鏡像使用幫助
BFSU 目前提供了 Julia 的官方包註冊表 General 鏡像來加速 Julia 包的安裝。BFSU 同時也提供了 Julia 二進制程序的鏡像,關於其使用請參考 Julia Releases.
注:本鏡像的使用需要 Julia v1.4.0 或更新的版本。
使用方式
只需要設置環境變量 JULIA_PKG_SERVER 即可切換鏡像。若成功切換鏡像,則能通過 versioninfo() 查詢到相關信息,例如:
julia> versioninfo()
Julia Version 1.4.1
Commit 381693d3df* (2020-04-14 17:20 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel® Core™ i7-6800K CPU @ 3.40GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)
Environment:
JULIA_PKG_SERVER = https://mirrors.bfsu.edu.cn/julia/static
若不設置該環境變量則默認使用官方服務器 pkg.julialang.org 作爲上游。
臨時使用
不同系統和命令行下設置環境變量的方式各不相同,在命令行下可以通過以下方式來臨時修改環境變量
Linux Bash: export JULIA_PKG_SERVER=https://mirrors.bfsu.edu.cn/julia/static
Windows Powershell: $env:JULIA_PKG_SERVER = 'https://mirrors.bfsu.edu.cn/julia/static'
也可以利用 JuliaCN 社區維護的中文本地化工具包 JuliaZH 來進行切換:
using JuliaZH # 在 using 時會自動切換到國內的鏡像站
JuliaZH.set_mirror(“BFSU”) # 也可以選擇手動切換到 BFSU 鏡像
JuliaZH.mirrors # 查詢記錄的上游信息
永久使用
不同系統和命令行下永久設定環境變量的方式也不相同,例如 Linux Bash 下可以通過修改 ~/.bashrc 文件實現該目的:
~/.bashrc
export JULIA_PKG_SERVER=https://mirrors.bfsu.edu.cn/julia/static
此外,這裏再提供一種針對 Julia 的全平臺通用的方式:$JULIA_DEPOT_PATH/config/startup.jl ( 默認爲 ~/.julia/config/startup.jl ) 文件定義了每次啓動 Julia 時都會執行的命令,編輯該文件,添加以下內容即可:
~/.julia/config/startup.jl
ENV[“JULIA_PKG_SERVER”] = “https://mirrors.bfsu.edu.cn/julia/static”
也可以選擇使用 JuliaZH 來一鍵修改/創建 startup.jl 文件:
以 BFSU 鏡像站爲例
julia> JuliaZH.generate_startup(“default”)
┌ Info: 添加 PkgServer
│ 服務器地址 = “https://pkg.julialang.org”
└ 配置文件 = “/root/.julia/config”
julia> JuliaZH.generate_startup(“BFSU”)
┌ Info: 更新 PkgServer
│ 原服務器地址 = “https://pkg.julialang.org”
│ 新服務器地址 = “https://mirrors.bfsu.edu.cn/julia/static”
└ 配置文件 = “/root/.julia/config”
若要臨時禁止,可以通過 julia --startup-file=no 來取消執行 startup.jl 文件。
常見問題
爲什麼有些包的下載還是很慢?
有兩類數據不會被鏡像:
在 deps/build.jl 文件中硬編碼的下載地址,例如 GR.
在 Artifacts.toml 中沒有給出 download 項的資源, 例如 TestImages.
在安裝包含這兩類數據的包時,其數據依然是從原始地址進行下載,因此若網絡不穩定則可能會在 build 階段報錯。
爲什麼註冊表還是從原地址下載?
Julia v1.4.0 之前的版本採用的是 git clone 的方式拉取註冊表,所以爲了保持兼容性,即使設置上游鏡像也依然會通過 git 來進行更新。
以 General 爲例,可以通過刪除 $JULIA_DEPOT_PATH/registries/General(默認爲 ~/.julia/registries/General) 文件夾來重置,從而在下次更新時從鏡像站拉取一份新的 General. 但是這樣一來,在舊版本 Julia 中就無法對註冊表進行更新, 因此最好需要根據自己的使用場景來權衡。
爲什麼有些包還是從原地址下載?
鏡像站只鏡像註冊表中記錄的包,因此如果某些包是通過指定 URL 的方式來安裝的話,那麼該包的更新不會從鏡像站進行下載。這常見於那些還未註冊的包及其版本,例如:
]add Flux#master
]add https://github.com/FluxML/Flux.jl.git
Pkg.add(PackageSpec(url=“https://github.com/FluxML/Flux.jl.git”))
Julia 二進制安裝程序
Julia 是一個全新的以科學計算爲核心的通用編程語言,其二進制程序可以到 https://mirrors.bfsu.edu.cn/julia-releases/bin/ 下載。
這裏僅鏡像 JuliaLang Downloads 中提供的穩定發行版以及 rc 版本。每日構建的測試版 (nightlies) 以及 Juno/Julia Pro等 IDE 版本不包括在內。
儘管一些包管理工具(例如 apt, pacman, conda, choco) 中提供有 Julia,但是這些工具或多或少都存在一些由二進制 依賴導致的問題,因此官方推薦的方式是根據自己的使用平臺下載相應的二進制程序,然後通過解壓的方式進行手動安裝。
Julia 一鍵安裝
對於習慣命令行的用戶而言,jill.py https://github.com/johnnychen94/jill.py 是一個社區維護的全平臺下一鍵安裝 Julia 的命令行工具。
安裝/更新 jill: pip install jill --user -U (需要 Python 3.6 或更新的版本)
安裝 Julia:jill install [VERSION] [--upstream UPSTREAM] [--confirm]
jill install:最新的 x.y.z 版本
jill install --confirm:無需交互確認直接安裝
jill install --upstream BFSU:從北外鏡像下載並安裝
jill install 1.4:安裝最新的 1.4.z 版本
查詢現存的上游鏡像:jill upstream
幫助文檔:jill [COMMAND] --help
jill --help:查詢存在的 jill 命令
jill install --help:查詢 install 命令的使用方式
利用 jill 安裝完成後即可通過在命令行執行 julia/julia-1/julia-1.4 來啓動不同版本的 Julia.
閱讀原文