美文网首页
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