朱莉娅:我如何“修复”某个特定版本的软件包?

时间:2017-11-03 02:20:12

标签: package julia

如何在特定版本“修复”软件包?在朱莉娅?

因此,如果包破坏现有代码,我们就不必更新包。

3 个答案:

答案 0 :(得分:5)

official docs中非常清楚地描述了这样做的过程。但是,我怀疑这个问题会经常被搜索,所以也许它不会因为加倍而受到伤害。

可以使用Pkg.pin将包固定到特定版本。单输入法将包封装到当前版本:

julia> Pkg.pin("DependentBootstrap")
INFO: Creating DependentBootstrap branch pinned.b32df31a.tmp

julia> Pkg.status()
13 required packages:
...
 - DependentBootstrap            0.1.0              pinned.b32df31a.tmp
 - ForecastEval                  0.1.0

您将注意到该软件包已固定到特定的git提交。

您可以使用第二个参数固定到特定包的特定标记版本:

julia> Pkg.pin("DependentBootstrap", v"0.0.1")
INFO: Creating DependentBootstrap branch pinned.996d3c22.tmp
INFO: Downgrading ForecastEval: v0.1.0 => v0.0.1
INFO: Building SpecialFunctions
INFO: Building Rmath

julia> Pkg.status()
13 required packages:
...
 - DependentBootstrap            0.0.1              pinned.996d3c22.tmp
 - ForecastEval                  0.0.1

请注意,钉扎操作会自动降级ForecastEval以满足版本要求。

您可以使用Pkg.free

将软件包恢复到最新的稳定版本
julia> Pkg.free("DependentBootstrap")
INFO: Freeing DependentBootstrap
INFO: Upgrading ForecastEval: v0.0.1 => v0.1.0
INFO: Building SpecialFunctions
INFO: Building Rmath

julia> Pkg.status()
13 required packages:
...
 - DependentBootstrap            0.1.0
 - ForecastEval                  0.1.0

请注意ForecastEval也自动返回到最新版本。

答案 1 :(得分:0)

这个问题已经在How to pin a package to a certain version using Julia 0.7?中得到了回答。由于该问题的重点在于Julia 0.7,因此很难将这些问题联系起来。以下可以在Julia 1.0(似乎是0.7)中使用。

Pkg.add(PackageSpec(name = "GDAL", version = "0.1.2"))
Pkg.pin(PackageSpec(name = "GDAL", version = "0.1.2"))

或在REPL打包模式下

pkg> add GDAL@0.1.2
pkg> pin GDAL@0.1.2

请注意,如果您使用PackageSpec,则只有使用Pkg.add才能安装正确的版本(已通过Docker Image“ julia:1.0.5-buster”测试)。

答案 2 :(得分:-2)

对于pkg软件包的最新更新,已接受的答案不再起作用。 您必须在@符号后指定版本。 pin Example@0.1.0

(v1.1) pkg> pin CSV@0.4.2
 Resolving package versions...
 Installed CSV ─ v0.4.2
  Updating `C:\Users\S\.julia\environments\v1.1\Project.toml`
  [336ed68f] ↓ CSV v0.4.3 ⇒ v0.4.2 ⚲
  Updating `C:\Users\S\.julia\environments\v1.1\Manifest.toml`
  [336ed68f] ↓ CSV v0.4.3 ⇒ v0.4.2 ⚲

⚲表示该版本已成功固定。

已更新到official manual

的链接