shell服务器中安装R包出现Error in dyn.load(file, DLLpath = DLLpath, ...) : 问题时

该错误其实是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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容