Julia离线安装第三方包

Julia如何在离线环境下(如集群)安装packages呢?

Python有很方便的第三方库集成Anaconda,离线安装时依赖也容易通过conda或pip解决。Julia早前有JuliaPro,后来JuliaPro v1.5合并到puma,再之后就取消了。虽然JuliaPro也集成了一些包,但相比Anaonda还是有些黯然失色,而且依赖依旧是很棘手的问题。

目前,集群离线安装Julia第三方包最合理的方法是本地Windows10通过VMware安装相同版本号的linux系统,然后在虚拟机中以user身份安装第三方包,修改JULIA_DEPOT_PATH环境变量,复制整个Julia到linux集群中。

以root身份,复制之后使用Julia会报文件权限的错误。

1 查询集群linux版本号,

[misaraty@master ~]$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

清华源下载CentOS-7-x86_64-Minimal-1708。

Windows10下安装虚拟机VMware-workstation-full-16.2.1-18811642,安装上述镜像。安装过程中,虚拟机设置-网络适配器默认NAT即可,虚拟机设置-显示缩放比例-拉伸模式-自由拉伸;安装之后关闭拉伸模式;可以改善安装过程中高分屏字体太小的问题。user设置密码,也可以后续通过passwd misaraty来修改,此处xshell连接虚拟机需要。

其余配置参考虚拟机中安装CentOS

2 从官网下载Julia v1.6.4 Generic Linux on x86 64-bit (GPG)。在user模式下,解压缩于虚拟机中,不需要编译安装即可使用。

修改.bashrc,

# julia
export PATH=$PATH:/home/misaraty/soft/julia-1.6.4/bin
export JULIA_DEPOT_PATH="/home/misaraty/soft/julia-1.6.4/.julia"

JULIA_DEPOT_PATH是Julia第三方包安装的位置,默认位置是user/.julia,不利于整体转移Julia包于集群中,所以修改为Julia自身路径。

参考

How to manually install packages on a HPC without internet?

rsync同步方式

permissions for installing packages on julia in slurm cluster

Julia package add (zip master file from github)

Environment Variables

Julia on the HPC Clusters

在虚拟机中打开Julia,以Gadfly.jl作为测试项,

using Pkg
Pkg.add("Gadfly")
using Gadfly

Pkg.dir("Gadfly")可以查询存放位置。

3 复制整个Julia到集群中,修改.bashrc。


查询Centos系统版本号,

[misaraty@mgm01 soft]$ cat /etc/redhat-release
CentOS release 6.2 (Final)

查询库文件编译时所使用的GCC版本号,

[misaraty@master lib]$ strings -a libjulia.so | grep "GCC"
GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-23)
GCC: (GNU) 7.3.0

显示Julia已安装第三方包,

julia> Pkg.status()
      Status `~/soft/julia-1.6.4/.julia/environments/v1.6/Project.toml`
  [05287f9a] CarrierCapture v0.1.0 `https://github.com/Crazy-Rookie/CarrierCapture.jl#master`
  [a93c6f00] DataFrames v1.2.2
  [0c46a032] DifferentialEquations v6.20.0
  [587475ba] Flux v0.12.8
  [c91e804a] Gadfly v1.3.4
  [ea4f424c] Gen v0.4.4
  [4076af6c] JuMP v0.21.10
  [1902f260] Knet v1.4.9
  [add582a8] MLJ v0.16.11
  [91a5bcdd] Plots v1.24.2
  [438e738f] PyCall v1.92.5
  [fce5fe82] Turing v0.19.0

显示环境变量,

julia> versioninfo()
Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, cascadelake)
Environment:
  JULIA_DEPOT_PATH = /home/misaraty/soft/julia-1.6.4/.julia