问题,报错其实很直接,就是有个动态库找不到
library(monocle3)
Error: package or namespace load failed for ‘monocle3’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/zhouwg/R/x86_64-pc-linux-gnu-library/4.2/terra/libs/terra.so':
libgdal.so.20: cannot open shared object file: No such file or directory
解决尝试一,重装terra,但是依旧报错,说明此方法不行
install.packages('terra')
configure: error: gdal-config not found or not executable.
ERROR: configuration failed for package ‘terra’
* removing ‘/home/zhouwg/R/x86_64-pc-linux-gnu-library/4.2/terra’
* restoring previous ‘/home/zhouwg/R/x86_64-pc-linux-gnu-library/4.2/terra’
进一步查看原因,会发现其实就是 libgdal.so.20 => not found
system('ldd /home/zhouwg/R/x86_64-pc-linux-gnu-library/4.2/terra/libs/terra.so')
linux-vdso.so.1 => (0x00007ffdb21e2000)
libgdal.so.20 => not found
libproj.so.0 => /lib64/libproj.so.0 (0x00007f9984892000)
libgeos_c.so.1 => /lib64/libgeos_c.so.1 (0x00007f998466b000)
因此,问题的解决办法就很直接了,只需要让Rstudio server 找到这个动态库即可
所以开始安装 libgdal 库
1.1 下载 libgdal 库安装包
网址:http://download.osgeo.org/gdal/1.11.2/
下载:gdal-1.11.2.tar.gz(11.2版本)
tar.gz(linux) zip(windows)
1.2 安装
解压该tar.gz后,从终端进入到 libgdal 所在目录
命令如下:
./configure
make
make install
我先前已经安装了这个库,所以理论上,应该就解决了,但是接下来又遇到一个问题,就是题目说的:monocle3 在linux 终端R可用,但在Rstudio server无法使用
重点,这里提供一个解决办法,就如何在Rstudio 特定调用 Linux环境变量下的特定动态库 dyn.load()函数
dyn.load('/home/zhouwg/data/software/gdal-2.3.0/lib/libgdal.so.20')
library(terra) ### 顺利加载进去
library(monocle3)
Attaching package: ‘monocle3’
The following objects are masked from ‘package:Biobase’:
exprs, fData, fData<-, pData, pData<-
以后再遇到这种动态库没办法在根目录找到的问题,就可以万能解决啦。
更新
如果在安装某个包,不管是是Rstudio server还是Linux的R终端都没办法编译成功,都报错说/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
在 ~./bashrc 里面预定义 libstdc++.so.6 动态库的寻找位置,问题即可解决
export LD_PRELOAD="/home/zhou/data/software/gcc-5.3.0/lib64/libstdc++.so.6"