生产环境中的Julia包版本控制

问题描述 投票:5回答:2

如果你想在生产环境中使用Julia,如何在Julia中进行版本控制。也就是说,大多数Julia包和Julia本身都有0.3.10或类似的版本号,所以你应该为(不久的将来)重大的接口变化做好准备,尤其是当第一个数字从0翻到1的时候。

我的包状态看起来像这样。

julia> Pkg.status()
4 required packages:
 - DataFrames                    0.6.9
 - Gadfly                        0.3.13
 - Jewel                         1.0.5
 - Mongo                         0.1.3
44 additional packages:
 - ArrayViews                    0.6.3
 - BinDeps                       0.3.15
 - Calculus                      0.1.10
 - Codecs                        0.1.4
 - Color                         0.4.7
 - Compat                        0.6.0
 - Compose                       0.3.13
 - Contour                       0.0.7
 - DataArrays                    0.2.17
 - DataStructures                0.3.12
etc...

建议你使用 Pkg.update() 所以你的所有软件包上都有最新的补丁。

如果你因为这些补丁而需要更新一个包,或者你需要使用一个新的功能,你可能会破坏你的代码,而且各种包之间也可能存在依赖关系。

Julia可能是一个足够成熟的语言,不存在严重的版本控制问题,但我觉得有必要调查一下Julia用户的经验。

version-control julia
2个回答
9
投票

在生产环境中,你不应该使用 Pkg.update() 经常,或者至少在没有先在非生产环境中进行测试的情况下。这对每个打包系统都是如此,而不仅仅是Julia.特别是对于Julia,我也建议建立一套适合你的版本,然后在你的系统中使用适当的下限和上限。REQUIRE 文件。

例如,假设 JuMP 0.9.2对我来说很好用,Gadfly 0.4.2也是如此。我可能会在 ~/.julia/v0.3/REQUIRE:

JuMP 0.9.2 0.10
Gadfly 0.4.2 0.5

这样,如果我跑 Pkg.update() 我会得到 0.9.30.4.3 如果他们出来了,但我不会自动升级到。JuMP 0.10. 当然,这只有在你相信软件包维护者会合理地使用版本号的情况下才会有效,这是个严重的问题,尤其是当它们是预先的1.0.


5
投票

DeclarativePackages.jl 包 (https:/github.comrenedDeclarativePackages.jl)允许你准确地指定你想为每个项目使用的每个包的哪些版本:它在启动Julia时使用的正是这些包的可用版本。这听起来像是你要找的东西。

© www.soinside.com 2019 - 2024. All rights reserved.