问题: 我想在我们的企业网络上为我们的开发人员提供julia,由于敏感数据,该网络根本没有互联网接入(无代理)。
据我所知,julia旨在使用github。 例如julia> Pkg.init()尝试访问: GIT中://github.com/JuliaLang/METADATA.jl
示例: 我通过创建本地CRAN存储库(rsync)并设置本地Web服务器来解决R的这个问题。 我也通过创建本地PyPi存储库(bandersnatch)+ webserver以同样的方式解决了python的这个问题。
问题: 有没有办法为julia创建元数据和包的本地存储库?
提前谢谢你。 罗马
答案 0 :(得分:8)
是的,使用Julia软件包管理器的好处之一是您应该能够分叉METADATA并在任何您喜欢的地方托管它(并保留一个分支,您可以在允许客户端更新之前实际检查新软件包)。你可能是第一批真正建立这样一个系统的人之一,所以期望你需要提交一些问题(或者更好的是拉动请求),以便让一切顺利进行。
请参阅指定METADATA repo URL的Pkg.init()的额外参数。
如果您想要一个更简单的管理解决方案,我还会考虑在一个系统(连接到Internet)上安装软件包的两层设置,然后将生成的~/.julia
目录复制到受限制的系统。如果您使用的软件包具有二进制依赖性,如果您没有双方的类似系统,或者某些依赖项是全局安装的,则可能会遇到问题,但Pkg.build("Pkgname")
可能会有所帮助。
答案 1 :(得分:2)
这是我解决它(现在),使用第二个建议 ivarne 。我使用两层设置,两个网络连接到互联网(办公网络),一个空气网络(开发网络)。
系统信息: openSuSE-13.1(两个网络),julia-0.3.5(两个网络)
第一层(办公室网络)
/sharename/local/julia
。/sharename/local/bin/julia
至/sharename/local/julia/bin/julia
/sharename/local/bin/
$PATH
附加到/etc/profile.d/scriptname.sh
/etc/gitconfig
:[url "https://"] insteadOf = git://
(用github解决代理服务器问题)# julia
Pkg.add("PackageName")
随后用于安装各种软件包。两个网络定期连接(具有某些安全措施ssh,防火墙,路由),可在短时间内自动进行数据交换。
第二层(开发网络)
rsync -avz --delete
的shell脚本,为每个用户同步第一层的.julia
目录。 结论(到目前为止):
它似乎工作得相当好。
正如 ivarne 建议如果安装了一个软件包并且在第一层上完成(编译?)文件复制不仅仅是一些问题,那么软件包将不会在第二层运行。但这可以通过Pkg.build("Pkgname")
来解决。