该错误其实是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
网友评论