茱莉亚升级后是否需要重新添加软件包

时间:2019-12-07 13:26:36

标签: julia

我在win10上将Julia从v1.1升级到v1.3,但是这些软件包在新版本中丢失了。

v1.1

$ julia_1.1
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.1.0 (2019-01-21)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(v1.1) pkg> status
    Status `C:\Users\User\.julia\environments\v1.1\Project.toml`
  [c52e3926] Atom v0.11.3
  [4c0ca9eb] Gtk v0.18.0
  [f67ccb44] HDF5 v0.12.4
  [4138dd39] JLD v0.9.1
  [e5e0dc1b] Juno v0.7.2
  [23992714] MAT v0.6.0
  [91a5bcdd] Plots v0.26.3
  [b8865327] UnicodePlots v1.1.0
  [8f399da3] Libdl

但是这些软件包未显示在v1.3

$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.3.0 (2019-11-26)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(v1.3) pkg> status
    Status `C:\Users\User\.julia\environments\v1.3\Project.toml`
  [c52e3926] Atom v0.11.3
  [67c07d97] Automa v0.8.0
  [e5e0dc1b] Juno v0.7.2

我尝试使用update,但仍然没有显示。

并且我确保DEPOT_PATH具有相同的文件夹("C:\\Users\\User\\.julia")并在其中包含所有添加的软件包。

# (in v1.3)
julia> DEPOT_PATH
3-element Array{String,1}:
 "C:\\Users\\User\\.julia"
 "D:\\app\\Julia\\1.3.0\\local\\share\\julia"
 "D:\\app\\Julia\\1.3.0\\share\\julia"

我该如何解决?在我的记忆中,这不会在Linux中发生,对吗? (我在相同容量的docker中使用了不同版本。)

3 个答案:

答案 0 :(得分:2)

Julia的每个次要和主要版本(MAJOR.MINOR.PATCH)都使用自己的名为vMAJOR.MINOR的环境。例如,对于茱莉亚1.3.0,该环境被命名为v1.3,正如您在Pkg REPL模式中在pkg>之前的括号中所看到的那样。

当您从1.1.x更新到1.3.0时,您因此从环境v1.1切换到v1.3,该环境默认不包含任何程序包。在每个操作系统上都会发生这种情况。

我们如何将包裹从v1.1转移到v1.3

环境反映在.julia/enironments中的文件夹中。这些文件夹中的两个文件Manifest.tomlProject.toml代表各自的环境。您可以简单地创建文件夹v1.1的副本并将其命名为v1.3。然后,启动Julia 1.3 REPL,为安全起见,执行] instantiate,这将确保已正确安装所有组件。就是这样。

有关环境的更多信息,请参见herehere

答案 1 :(得分:1)

当您写status时,会打印出一条路径。您可以将1.1上打印的文件夹复制到1.3上打印的文件夹(该文件夹仅包含两个文本文件)。

答案 2 :(得分:0)

否。

要在次要版本之间进行升级(并且在主要版本之间也应如此,例如1.x-> 2.y),则无需重新下载所有软件包,只需在下面创建一个新文件夹v1.x [JULIA_INSTALL_DIR]/environments,然后从其中要使用相同软件包(例如Project.toml)的文件夹中复制两个文件Manifest.tomlv1.(x-1)

例如,要在Linux中从Julia 1.4升级到Julia 1.5,请在安装新的二进制文件后,键入一个终端:

$ cd ~/.julia/environments/
$ mkdir v1.5
$ cp v1.4/Project.toml v1.5/
$ cp v1.4/Manifest.toml v1.5/

然后,当您julia吃午餐时,您将使用packege(using xxx),然后您会注意到julia将“只是”针对特定的Julia版本(及其所有依赖项)预编译该软件包,因此可能需要一段时间),但无需重新下载该软件包。