一个想法:能不能分享自己的.julia

最近有个小伙伴私信我,找我要.julia包,看来他跟我一样,没钱搭梯子
不过他这个想法启发了我,我们可不可以把自己的.julia分享出来,不过这可能会牵扯到
系统架构和操作系统的不同
不管怎么说,这个墙实在太影响Julia体验了


这是我的.julia — julia1.1.1,我的电脑ubuntu18.04LTS,不知道会不会与windows冲突

提取码:mij2

用Linux的同学 tar -zxvf julia-package && mv julia-package .julia
用windows的同学用bandzip解压
记得把原来的.julia备份

2 个赞

可以用的,太感谢你啦!

我是 win10 .julia 有 5.72 GB(WSL 认为是 5.9G)。
WSL 中的 julia 全新的只有 67M 差不多就全是 registries 的大小了。

WSL 没啥可看的

~/.julia$ du -lh --max-depth=1

88K     ./clones
20K     ./compiled
4.0K    ./environments
92K     ./logs
24K     ./packages
67M     ./registries
67M     .

windows 下 .julia 文件夹的用途

win10 C:\Users\woclass\.julia

187M    ./artifacts
589M    ./clones
280M    ./compiled
3.4G    ./conda
0       ./config
755M    ./dev
52K     ./environments
2.0M    ./logs
619M    ./packages
0       ./prefs
75M     ./registries
5.9G    .

简单介绍一下各个文件夹的用途:

  • artifacts 新出的工件,也就是二进制依赖,基本下载都翻车在这里,里面的文件夹对应到一个 _jll 包。值得分享
  • clones 应该是记录着对应 git repo 的元信息。
  • compiled 存放预编译的 .ji 文件,不建议分享,因为预编译和机器硬件环境密切相关。
  • conda 估计是 Conda.jl 安装的,涉及到 PyCall 的东西可能就会装上它。
    没有也很正常,也可能不装在这里。
    但其实你装过其他版本的 conda 可以设置环境变量直接用,详见对应包的文档。
  • config 里面放着 startup.jl 跟 linux 的 .XXXrc 类似,会在 julia REPL 启动前执行。默认为空。
    另外 .julia_history 放在 ~ 下。
  • dev 搞开发用的,] dev xxx 默认放在这里。一般空的。
  • environments:里面有个版本对应的文件夹,其中 Project.toml 记录着你装了那些包
  • logs 打开看放着一些 .toml 文件和 repl_history.jl,记录着包相关的时间信息。估计是为了超时自动清理垃圾用吧。
  • packages:放着对应的 .jl repo 的 clone,基本都是纯代码。
    实际上除非是网络特别不好,一般来说装包都不会卡在这里,一般都是卡在二进制依赖上。
  • prefs 某些包对应的配置文件,空的也正常。我的里面有:IJuliaPyCallIJulia 里就记录着我用的 jupyter.exe 的路径。
  • registries julia 的包注册表,可以分享,也可以直接从国内镜像上 clone

以上文件夹是 0.7 以后的版本共用的, 0.6 会自己建一个文件夹。

但其实我已经把 0.7 以下的版本都删了,只留了 0.7、1.0.5、和最新稳定版。
包都装在 1.0.5 上,这些一共加起来才装了 7 个包,conda 是真的大,也可能是有些老包没删干净吧。

值得分享的文件夹

分享前记得指定 julia 版本,不然容易出问题。

建议标上四元式,即 julia版本+TRIPLETS:例如:julia1.0.5-x86_64-w64-mingw32
或者直接贴出你的 versioninfo() 也可以。

要分享就分享一下以下几个文件夹吧:

  • artifacts:二进制依赖
  • clones:git repo 元信息
  • environments:装了哪些包
  • logs:装包的时间信息。注意:里面有 repl_history.jl 可能泄露个人信息!
  • packages:包
  • registries:包的注册表(可选)

要分享 PyCall 相关的东西可以把 condaprefs 也带上。
注意:prefs 里可能会有你的用户名。

4 个赞

你要不放出来个链接??

我装的包很少,而且因为我之前装过很多版本,所以 .julia 垃圾估计不少

  [c52e3926] Atom v0.12.8
  [6e4b80f9] BenchmarkTools v0.5.0
  [7073ff75] IJulia v1.21.1
  [e5e0dc1b] Juno v0.8.1
  [d330b81b] PyPlot v2.8.2
  [b873ce64] ReplMaker v0.2.3

我先试试在虚拟机或 vps 重装干净的 julia。

其实可以发散思维用 CI 打包,另外 docker 也是个好东西。
搞这种二进制分发就和 python 的 whl 有点像,应该是能做到那样的,这个展开讨论有点多,等我写一写,写的比较多就另开一贴讨论julia 的装包困难问题。