(转)Julia PkgServer 镜像服务

2023-05-16

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.
阅读原文

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(转)Julia PkgServer 镜像服务 的相关文章

  • 如何生成随机概率分布 julia

    我在字典中有一个键列表 我想为每个项目分配一个 0 到 1 之间的数字 使分配的数字总和为 1 如何做到这一点 我尝试使用 rand 进行一些操作 但没有成功 有什么建议么 更数学的答案是使用狄利克雷分布 https en wikipedi
  • 在 VS Code 中找不到 Julia 包

    我对 vscode 很陌生 之前一直使用 jupyter 笔记本 问题是 当我尝试在 VS Code 中运行 julia 时 它找不到任何已随 jupyter 安装的软件包 我是否必须重新安装所有内容 或者有什么方法可以解决这个问题 Jul
  • 像 R 的 is.na 函数一样在 Julia 中查找缺失值

    朱莉娅 1 0 0文档 https docs julialang org en v1 manual noteworthy differences Noteworthy differences from R 1关于 Julia 和 R 中缺失
  • 使用数组 eltype 实现采样器

    钩入rand过去更容易 我想我遵循了描述在文档中 https docs julialang org en v1 stdlib Random A simple sampler without pre computed data 1 但它似乎不
  • 更改视图、plot3D、Julia 语言(类似于 matplotlib)

    我正在尝试改变 3D 散点图的视角 朱莉娅语言 例如 此代码更改了视角 但每次更改时都会单独绘制点 而不是一起绘制 for i 1 10 X i Y i 2 Z i 3 fig figure ax gca projection 3d plo
  • 类型稳定性如何让 Julia 如此之快?

    我听说类型稳定性使 Julia 如此之快 同时仍然与其他解释语言 例如 Python 一样具有表达能力 类型稳定性允许编译器在编译时直接根据输入类型确定函数的输出类型 因为 Julia 专门针对每种输入类型进行编译 这意味着如果所有函数都是
  • 如何让 Rosenbrock23 在 ParameterizedFunctions.jl DSL 中使用 ODE?

    进一步这个问题 https stackoverflow com questions 54422068 how to fix typeerror in setindex in differentialequations jl 54423008
  • 使用 !== 或 != 将 Julia 变量与 `nothing` 进行比较

    在一些 Julia 代码中 何时可以看到条件表达式 例如 if val nothing dosomething end where val是一个类型变量Union Int Nothing 条件有什么区别val nothing and val
  • Julia:生成唯一的随机整数数组

    我正在尝试创建 10 个唯一随机整数的元素数组 但是我无法创建具有唯一值的数组 Julia 中是否有类似 Python 的东西样本函数 https docs python org 2 library random html random s
  • 如何在 Julia 中提供可重现的样本数据

    Here on stackoverflow com 当我提供样本数据来制作可重现的示例时 我该如何以朱利安方式做到这一点 In R例如dput df 将输出一个字符串 您可以用它来创建df再次 因此 您只需将结果发布到 stackoverf
  • Julia JUMP Gurobi MIP - 查询并存储最佳目标并在运行时绑定

    我通过 Julia 中的 JuMP 包使用 Gurobi 来解决混合整数程序 我想获得一个图表像这个 https i stack imgur com 427LC png 其中还提供了基于 Python 的解决方案 也已在古罗比社区形式 ht
  • 在 Julia 中,有没有办法让“现在”(至少)达到毫秒精度?

    通常 要了解代码中发生的情况 您需要高精度时间来分析您的应用程序或出于其他原因 显然 现在 https stackoverflow com questions 32407509 how to get the milliseconds fro
  • @distributed 似乎有效,函数返回很不稳定

    我正在学习如何在 Julia 中进行并行计算 我在用着 sync distributed在 3x 嵌套的开始处for循环并行化事物 参见底部的代码 从线路上看println errCmp row col 我可以观察数组的所有元素errCmp
  • 如何在一张图中显示多个相邻的图像?

    我正在使用 Julia PyPlot 和 Images 来处理一些图片 因为显示几十个图是不可能的 所以我想堆叠图像 如下所示 我有图像数据Array Array Float64 2 1 已经正常化了 以下代码仅显示最后一个最小的图像 该数
  • 如何给DArray的元素设置值?

    我正在探索 Julia 的并行计算并尝试了以下方法 a dzeros 5 a 1 5 但刚刚收到此错误 setindex not defined for DArray Float64 1 Array Float64 1 嗯 我以为手册上说s
  • 当 Jupyter 单元包含函数、循环或其他块时,是否可以将其拆分为多个单元?

    Jupyter 的一项功能是能够一次执行一个单元 如果一个单元格有很多语句 通常可以 希望 将其拆分为更小的单语句单元格 除非涉及块 例如 if for def 等 这个问题之前以不同的方式提出过 在Jupyter中逐步执行算法 https
  • 如何在 Julia 中保存文件

    在某些时候 我认为 Julia v0 7 你可以做 save savepath thingtosave为了使用 Julia 保存文件 我尝试在 v0 7 上运行它 看看是否收到弃用警告 但即使在 0 7 上 它也说 save未定义 如何使用
  • 如何从字符串转换为数组?

    If s 1 2 3 4 5 我们如何从中获得一个整数数组 我想返回 5 个元素Array Int64 1 1 2 3 4 5 正如 isebarn 使用的那样 split s 对于将字符串拆分为单词非常有用 默认情况下按空格拆分 juli
  • 朱莉娅在矩阵中查找(行,列)而不是索引

    在 Julia 中 您可以通过以下方式找到矩阵中元素的坐标 julia gt find x gt x 2 1 2 3 2 3 4 1 0 2 3 element Array Int64 1 2 4 9 这些值是正确的 但我更希望得到 row
  • Julia Threads.@threads 比单线程性能慢

    我正在尝试求解一维热方程的数值 我正在使用有限差分 并且在 Julia 中使用 threads 指令时遇到一些问题 特别是下面有相同代码的两个版本 第一个是单线程 而另一个使用 threads 除了 thread指令之外 它们是相同的 fu

随机推荐

  • c语言现代方法 chapter20自学笔记

    如果编写程序需要用到数据在内存中如何存储 xff0c 那么除非必要 xff0c 否则不用 xff0c 如果用 xff0c 那么集中在程序中的某个模块 xff0c 不要分散在各处 20 1 移位运算符 c语言提供了6个位运算符 这些运算符可以
  • 查看python源码之jieba安装

    Python 2 x 下的安装 全自动安装 xff1a easy install jieba 或者 pip install jieba 半自动安装 xff1a 先下载http pypi python org pypi jieba xff0c
  • 在Ubuntu Linux上搭建go语言环境

    一 安装VMware Tools 1 在刚装好的ubuntu linux上 xff0c 如果没有安装VMware Tools xff0c 那么我们就要先安装它 打开我们的ubuntu linux xff0c 然后点击左上角的虚拟机 xff0
  • Linux nohup实现后台运行程序及查看(nohup与&)

    1 后台执行 一般运行linux上的程序都是执行 sh 文件 xff08 sh文件 xff09 xff0c 那如果不影响当前CMD窗口的操作 xff0c 需要后台运行怎么办呢 xff1f 这时就需要借助 nohup 和 amp 命令来实现
  • CA 认证过程及 https 实现方法

    CA 认证过程 CA 概述 xff1a Certificate Authority 的缩写 xff0c 通常翻译成认证权威或者认证中心 xff0c 主要用途是为用户发放数字证书 CA 认证的流程和公安局派出所颁发身份证的流程一样 认证中心
  • C++代码详解:string的赋值与C风格字符串转换

    C 43 43 代码详解 string的赋值与C风格字符串转换 61 61 61 61 61 string简介 61 61 61 61 61 string是C 43 43 里默认的字符串容器 xff0c 用于代替C风格的字符串指针与字符串数
  • nginx 基本配置

    一篇比较好的参考文 https www digitalocean com community tutorials how to install nginx on ubuntu 18 04 1 在 Ubuntu 上安装 Nginx sudo
  • 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug

    在说这个问题之前 必须先解释一下 我们在引入工程的时候 xcode会给我们3个选项 1 Copy items if needed 主要是说明 xff0c 是否要将文件拷贝到工程所在目录 如果不选中 xff0c 而且该库文件不在工程目录下 x
  • GitLab+Jenkins集群+docker CICD集成

    前言 最近部门进行CICD架构升级将引入k8s编排docker容器 借此机会梳理下目前应用部署发布方式 当前架构是我刚到公司时基于gitlab 43 jenkins 43 docker 43 nexus搭建 引入K8S后将调整pod yam
  • 10个轻松上手制作的Arduino项目

    创建Arduino项目可以给您带来很大的满足感 xff0c 但很多时候初学者不知道从哪里开始 启动创建项目时需要考虑很多事情 xff0c 如果您没有制作的经验 xff0c 那可能会令人困惑 正是因为这个原因 xff0c 我们为初学者收集到1
  • 7个基于Arduino的神奇项目!

    创客人数的规模正在增加 xff0c 从当地的超市到大城市繁忙的办公室 xff0c 到处都可以找到他们 xff0c 这些地方可能会有一个或两个创客 xff0c 或许更多 xff0c 在制定他们的下一个设计 xff0c 或者可能渴望找到一个前现
  • 用if语句如何检测一个变量是否存在。

    例如我们用if语句检测一下num这个变量是否存在 若我们直接写 xff1a var night 61 34 34 if num night 61 34 yes 34 console log night 注意 xff01 xff01 1 如果
  • nodejs中的__filename和__dirname的使用说明

    在node js开发中 xff0c 有时候需要获取一些环境变量 xff0c 其中 filename和 dirname 是两个有用的环境变量 dirname 获取的是调用 dirname的脚本文件本身的绝对路径 xff0c 不是启动脚本文件的
  • LPC1768 -- RTC实时时钟

    RTC是当下设备中比较普遍的一个部件 xff0c 很多设备都需要查看时间 RTC实时时钟已经在很多的单片机中集成 xff0c 以前还要专门的时钟芯片 xff0c 现在Cortex M3内核都包括了这个部件了 和以前NXP的ARM7内核不同的
  • Ubuntu Apache2配置SSL证书

    一 Ubuntu下的Apache2 1 安装Apache2 sudo apt get install apache2 默认站点在 var www 配置文件在 etc apache2 日志在 var log apache 启动脚本是 etc
  • 时间机器

    让我们回到过去的是回忆 让我们勇敢前行的是期望 致我最爱的电影 时间机器
  • pyqt5 Qthread事件 进度条 案例

    pyqt5 Qthread事件 进度条 案例 代码 xff1a from PyQt5 import QtWidgets span class token punctuation span QtCore import sys from PyQ
  • CString 的成员函数详解

    CString 的成员函数详解 CSTRING的成员函数详解 typedef ATL CStringT lt TCHAR StrTraitMFC DLL lt TCHAR gt gt CString CString的构造函数 xff1a 1
  • Rust: Rust 异步入门 (作者洋芋,来自Rust语言中文社区)

    Rust每周一知 Rust 异步入门 原创 洋芋 Rust语言中文社区 前天 这是一篇博文翻译 xff0c 略有删减 xff0c 整理代码方便统一阅读 xff0c Github链接 xff1a https github com lester
  • (转)Julia PkgServer 镜像服务

    https mp weixin qq com s DyegFcNEjieJspc 3B5G6w Julia PkgServer 镜像服务 原创 Johnny Chen JuliaCN 昨天 长久以来 xff0c 受国内网络环境影响 xff0