該錯誤其實是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