如何在 julia-1.6.2 上安装包 MbedTLS?
Posted
技术标签:
【中文标题】如何在 julia-1.6.2 上安装包 MbedTLS?【英文标题】:How to install package MbedTLS on julia-1.6.2? 【发布时间】:2022-01-21 12:38:54 【问题描述】:我解压并复制到 julia-1.6.2 到 /opt/julia/
[root@srvr0 ~]# cp -a /root/Downloads/julia-1.6.2 /opt/julia/
/etc/profile.d/julia.sh 的内容:
export JULIA_HOME=/opt/julia/julia-1.6.2
export JULIA_LOAD_PATH=/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
export JULIA_DEPOT_PATH=/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
export JULIA_PKG_DEVDIR=/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
export JULIA_PROJECT=/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
export JULIA_HISTORY=/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6/logs/repl_history.jl
设置环境变量:
[root@srvr0 ~]# source /etc/profile.d/julia.sh
调用朱莉娅:
[root@srvr0 ~]# julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.6.2 (2021-07-14)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
版本信息:
julia> versioninfo()
Julia Version 1.6.2
Commit 1b93d53fc4 (2021-07-14 15:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, westmere)
Environment:
JULIA_DEPOT_PATH = /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
JULIA_PROJECT = /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
JULIA_LOAD_PATH = /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
JULIA_PKG_DEVDIR = /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
JULIA_HOME = /opt/julia/julia-1.6.2
JULIA_HISTORY = /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6/logs/repl_history.jl
julia> import Pkg
julia> using Pkg
添加包 MbedTLS 但出现错误:
(v1.6) pkg> add MbedTLS
Installing known registries into `@stdlib/v1.6`
Added registry `General` to `/opt/julia/julia-1.6.2/share/julia/stdlib/v1.6/registries/General`
Resolving package versions...
Installed MbedTLS ─ v1.0.3
Updating `@stdlib/Project.toml`
[739be429] + MbedTLS v1.0.3
Updating `@stdlib/Manifest.toml`
[739be429] + MbedTLS v1.0.3
[56f22d72] + Artifacts
[ade2ca70] + Dates
[8f399da3] + Libdl
[de0858da] + Printf
[9a3f8284] + Random
[9e88b42a] + Serialization
[6462fe0b] + Sockets
[4ec0a83e] + Unicode
[c8ffd9c3] + MbedTLS_jll
Precompiling project...
✗ MbedTLS
0 dependencies successfully precompiled in 13 seconds
2 dependencies errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the packages
julia> using Pkg
ERROR: ArgumentError: Package Pkg not found in current path:
- Run `import Pkg; Pkg.add("Pkg")` to install the Pkg package.
Stacktrace:
[1] require(into::Module, mod::Symbol)
@ Base ./loading.jl:893
观察:在添加包 MbedTLS 之前,包 Pkg 在路径上,但在调用 add MbedTLS 后,我收到错误包 Pkg 在当前路径中找不到
请指导我安装 MbedTLS 包!
【问题讨论】:
为什么是 1.6.2?当前版本是 1.7.0,1.6 系列的最后一个版本是 1.6.4(1.6.5 和 1.7.1 即将发布) 可能升级并不容易(例如,由于某些公司规定等)。 【参考方案1】:我不喜欢你的JULIA_DEPOT_PATH
,它应该是一个与你的 Julia 安装文件分开的文件夹。这很可能会以某种方式导致您的安装损坏。
此外,这意味着任何包操作很可能需要root
权限,因为它指向/opt
文件夹。更糟糕的是,JULIA_DEPOT_PATH
也是在编译包时编写的,因此在某些情况下,您最终需要以sudo
运行 Julia。
因此,我建议将JULIA_DEPOT_PATH
设置为:/home/user/.julia
(这是默认设置)或类似于/home/user/JuliaPkg1.6.2
的内容
由于您已将软件包安装到 /opt/julia/julia-1.6.2/share/julia/stdlib/v1.6
,我建议删除 /opt/julia/julia-1.6.2/
并将 Julia 重新安装到该文件夹。
JULIA_HISTORY
应该再次指向JULIA_DEPOT_PATH
中的某个位置,否则您需要root 才能使用REPL。您不需要JULIA_PROJECT
,因为默认情况下JULIA_DEPOT_PATH/environments/v1.6
处的Project.toml
应该被加载。与JULIA_LOAD_PATH
和JULIA_PKG_DEVDIR
类似的故事。
总之,我会考虑只保留JULIA_HOME
和JULIA_DEPOT_PATH
变量,后者需要指向Julia 安装之外不需要root
写入权限的位置。
参考:https://docs.julialang.org/en/v1/manual/environment-variables/
【讨论】:
当您说损坏时,您的确切意思是什么?比如某些文件实际上是被编辑和覆盖的,还是 Julia 假设只有某些文件会存在于 depot 路径(和其他文件)上并且添加新文件会搞砸? 我对 Julia 包管理器的体验是,如果您在安装过程中操纵包并破坏该过程,则基本上很难恢复。我尝试过几次 Pkg.add("SomePackage") 并在过程中间按Ctrl+C
- 它通常不会很好地结束。也许 1.7.0 更具弹性 - 但是,每当出现超出 Pkg.instantiate()
和 Pkg.build()
的问题时,对我来说最简单的选择就是重新创建 DEPOT_PATH
以上是关于如何在 julia-1.6.2 上安装包 MbedTLS?的主要内容,如果未能解决你的问题,请参考以下文章
为LPC1549 LPCXpresso评估板开发基于mbed的项目