美文网首页
shell服务器中安装R包出现Error in dyn.load

shell服务器中安装R包出现Error in dyn.load

作者: 徐诗芬 | 来源:发表于2023-11-26 15:24 被阅读0次

该错误其实是Rlibrary的问题,设置linux共享库位置配置(LD_LIBRARY_PATH环境变量的错误)完整错误如下:

Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/user/Rlibs/rlang/libs/rlang.so':
/home/user/Rlibs/rlang/libs/rlang.so: undefined symbol: R_NewEnv

其错误原因是在R中安装包的时候调用了系统安装的非R的动态库

##进入R中使用以下命令查看是否有Rlibrary
Sys.getenv("LD_LIBRARY_PATH")
##查看现在的Rlibrary位置##
.libPaths()

没有Rlibrary的话需要在环境变量中重新设置LD_LIBRARY_PATH
临时设置的话可以在R中设置

new_ld_path <- "/path/to/new/library:/path/to/another/library"
Sys.setenv(LD_LIBRARY_PATH=new_ld_path)

也可在系统环境变量中永久修改

export LD_LIBRARY_PATH=/path/to/new/library:/path/to/another/library
source ~/.bashrc

但是!按照上述方法设置后我安装R包依然出现这样的问题,可能是因为我用的miniconda激活R?
还是报错。。。
最终换个R环境,该环境可能有问题,需重新安装,或者安装更新一版的R

conda activate R4.3

解决了。。。。。
(记录下这个过程,好像经常遇到这样rlang或lib的问题?)

万能公式:卸载重装?

但是,安装tidyverse和devtools这样需要C++编译的包,似乎还是报错!so sad!!!

安装需要编译的R包推荐使用conda,前提是确保R环境没问题(一开始用的R4.0有问题,换成R4.3)

conda install r-package

为了保证每次安装R包路径不变,可以在bashrc中设置固定的Rlibrary路径,详情见R install packages on linux

if [ -n $R_LIBS ]; then
  export R_LIBS=~/Rlibs:$R_LIBS
else
  export R_LIBS=~/Rlibs
fi

相关文章

网友评论

      本文标题:shell服务器中安装R包出现Error in dyn.load

      本文链接:https://www.haomeiwen.com/subject/ukpawdtx.html