(轉)Julia PkgServer 鏡像服務

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.
閱讀原文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章