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

如果你想在生产环境中使用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用户的经验。

解决方案:

在生产环境中,你不应该使用 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.

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何在父进程被终止的情况下保持子进程的活力

2022-4-20 4:00:11

解决方案

Vue为数据根级添加属性,并使之成为反应式的。

2022-4-20 5:00:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索