shell服務器中安裝R包出現(xiàn)Error in dyn.load(file, DLLpath = DLLpath, ...) : 問題時

該錯誤其實是Rlibrary的問題,設置linux共享庫位置配置(LD_LIBRARY_PATH環(huán)境變量的錯誤)完整錯誤如下:

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中安裝包的時候調用了系統(tǒng)安裝的非R的動態(tài)庫

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

沒有Rlibrary的話需要在環(huán)境變量中重新設置LD_LIBRARY_PATH
臨時設置的話可以在R中設置

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

也可在系統(tǒng)環(huán)境變量中永久修改

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

但是!按照上述方法設置后我安裝R包依然出現(xiàn)這樣的問題,可能是因為我用的miniconda激活R?
還是報錯。。。
最終換個R環(huán)境,該環(huán)境可能有問題,需重新安裝,或者安裝更新一版的R

conda activate R4.3

解決了。。。。。
(記錄下這個過程,好像經常遇到這樣rlang或lib的問題?)

萬能公式:卸載重裝?

但是,安裝tidyverse和devtools這樣需要C++編譯的包,似乎還是報錯!so sad!!!

安裝需要編譯的R包推薦使用conda,前提是確保R環(huán)境沒問題(一開始用的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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容