monocle3 在linux 终端R可用,但在Rstudio server无法使用

问题,报错其实很直接,就是有个动态库找不到

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"

你可能感兴趣的:(monocle3 在linux 终端R可用,但在Rstudio server无法使用)