Ubuntu24.04下RCall.jl加载SET_SYMVALUE符号失败报错求助
问题:Ubuntu 24.04 下 Julia 1.11.4 + R 4.5.0 加载 RCall 时出现 "SET_SYMVALUE" 未定义错误
环境信息
- 系统:Ubuntu 24.04
- Julia 版本:1.11.4
- R 版本:4.5.0
- RCall 版本:对应本地路径
~/.julia/packages/RCall/0ggIQ(旧版本)
错误详情
执行 using RCall 时触发如下错误:
julia> using RCall ERROR: InitError: could not load symbol "SET_SYMVALUE": /usr/lib/R/lib/libR.so: undefined symbol: SET_SYMVALUE Stacktrace: [1] set_last_value(s::Ptr{RCall.NilSxp}) @ RCall ~/.julia/packages/RCall/0ggIQ/src/methods.jl:589 [2] reval_p(expr::Ptr{RCall.ExprSxp}, env::Ptr{RCall.EnvSxp}) @ RCall ~/.julia/packages/RCall/0ggIQ/src/eval.jl:126 [3] reval(r::RCall.RObject{RCall.ExprSxp}, env::RCall.RObject{RCall.EnvSxp}) @ RCall ~/.julia/packages/RCall/0ggIQ/src/eval.jl:135 [4] set_hook(hookname::String, value::RCall.RObject{RCall.LangSxp}) @ RCall ~/.julia/packages/RCall/0ggIQ/src/eventloop.jl:72 [5] rgui_init() @ RCall ~/.julia/packages/RCall/0ggIQ/src/eventloop.jl:77 [6] __init__() @ RCall ~/.julia/packages/RCall/0ggIQ/src/setup.jl:211 [7] run_module_init(mod::Module, i::Int64) @ Base ./loading.jl:1378 [8] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String) @ Base ./loading.jl:1366 [9] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{…}, ignore_native::Nothing; register::Bool) @ Base ./loading.jl:1254 [10] _include_from_serialized (repeats 2 times) @ ./loading.jl:1210 [inlined] [11] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{…}, DEPOT_PATH::Vector{…}) @ Base ./loading.jl:2057 [12] _require(pkg::Base.PkgId, env::String) @ Base ./loading.jl:2527 [13] __require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:2388 [14] #invoke_in_world#3 @ ./essentials.jl:1089 [inlined] [15] invoke_in_world @ ./essentials.jl:1086 [inlined] [16] _require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:2375 [17] macro expansion @ ./loading.jl:2314 [inlined] [18] macro expansion @ ./lock.jl:273 [inlined] [19] __require(into::Module, mod::Symbol) @ Base ./loading.jl:2271 [20] #invoke_in_world#3 @ ./essentials.jl:1089 [inlined] [21] invoke_in_world @ ./essentials.jl:1086 [inlined] [22] require(into::Module, mod::Symbol) @ Base ./loading.jl:2260 during initialization of module RCall Some type information was truncated. Use `show(err)` to see complete types.
附加问题:$ 命令无法使用,无法调用 R REPL;已尝试重新定义 R_HOME,无效。
解决方案
1. 更新 RCall 到最新兼容版本
打开 Julia REPL,执行:
using Pkg Pkg.update("RCall") Pkg.build("RCall")
2. 安装开发版 RCall(若稳定版未适配)
如果最新稳定版仍不支持 R 4.5.0,直接安装 GitHub 开发分支:
using Pkg Pkg.add(url="https://github.com/JuliaInterop/RCall.jl") Pkg.build("RCall")
3. 验证并修复 R 环境变量
确保 R_HOME 指向正确路径(Ubuntu 默认是 /usr/lib/R),执行:
ENV["R_HOME"] = "/usr/lib/R" Pkg.build("RCall")
重启 Julia 后再尝试 using RCall。
4. 补全 R 开发依赖
确保 R 安装了完整的开发包,避免链接错误:
sudo apt-get install r-base-dev
5. 清除旧缓存并重建
若存在残留编译缓存,彻底移除后重新安装:
using Pkg Pkg.rm("RCall") Pkg.add("RCall") Pkg.build("RCall")
内容的提问来源于stack exchange,提问作者weera
相关产品推荐
相关产品推荐

