如何在特定版本“修复”软件包?在朱莉娅?
因此,如果包破坏现有代码,我们就不必更新包。
答案 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
的链接