为什么 julia 装包这么困难?

起因

就这个话题顺表说一下造成装包困难的原因以及各种层面的解决办法。

为什么装包困难

无他,网不好。

纯 julia 的包一般不会有什么问题,即使无法访问 github,其他人代为下载,然后再安装都很方便。

但是另一些包有二进制依赖。比如 FFMPEG
在安装这些包时,会通过 build.jl 下载依赖。
这时候网络不好就很容易翻车。
另外github会把一些release 再在亚马逊 s3 上,这就更火上浇油了,亚马逊会限制访问时间,你下的不够快就下不下来了。

一些解决办法

你有一个结实的梯子比啥都强。

代理

  • 全局代理
  • 使用 github 镜像
    无论有没有二进制依赖都挺好用,就是需要手工将指向 github 的链接改动。
    另外新版的工件可能需要递归改几个包。
  • URL 劫持
    这个应该配合上一条使用。更进一步的可以做到使用本地已经下载好的包。

镜像分发

  • 包 git repo 的镜像
  • 包 release 的镜像
    分发二进制依赖的价值比较大,但其实很多有名的依赖国内已经有镜像了,例如 Conda。看怎么能利用一下。
  • PkgServer.jl
    julia 官方的二进制分发方案。
  • 静态镜像
    像tuna这种镜像站,他们比较喜欢纯静态的分发,PkgServer 需要跑一个服务,他们就不太接受。
    等解决了这个问题,国内镜像就好弄了。

ref:

打包分发

  • JuliaPro
  • 打包 .julia/

扩展阅读

3 个赞


太难了,设置了科大镜像还要从Github上面clone。。。。

要不你学我,把github上的项目导入到码云里,再从码云clone过来

现阶段的镜像只是把包注册表镜像了,连包的本体都没有镜像,所以装包还是会访问 github

我觉得很多package在build的时候直接用download这个函数来下载二进制依赖也是问题,build的时候没有一点输出提示…所以也搞不清楚到底要等多久

2 个赞