远程服务器安装monocle3失败:sf包加载错误求助
解决无sudo权限下Ubuntu安装monocle3时sf包加载失败问题
错误原因
undefined symbol: _Z16CPL_set_data_dir 这个错误说明sf包编译时无法找到GDAL库的相关符号,本质是系统缺少GDAL、GEOS、PROJ这些地理空间依赖库,且没有sudo权限无法通过apt安装系统级依赖,只能本地编译安装这些依赖库,再指定路径编译sf包。
解决方案步骤
1. 本地编译安装GDAL、GEOS、PROJ依赖
在用户主目录下创建local_libs目录存放本地编译的库:
mkdir -p ~/local_libs/src ~/local_libs/install cd ~/local_libs/src
安装PROJ
wget https://download.osgeo.org/proj/proj-9.1.1.tar.gz tar xzf proj-9.1.1.tar.gz cd proj-9.1.1 ./configure --prefix=$HOME/local_libs/install make -j4 make install cd ..
安装GEOS
wget https://download.osgeo.org/geos/geos-3.11.2.tar.gz tar xzf geos-3.11.2.tar.gz cd geos-3.11.2 ./configure --prefix=$HOME/local_libs/install make -j4 make install cd ..
安装GDAL
wget https://download.osgeo.org/gdal/3.6.4/gdal-3.6.4.tar.gz tar xzf gdal-3.6.4.tar.gz cd gdal-3.6.4 ./configure --prefix=$HOME/local_libs/install --with-proj=$HOME/local_libs/install --with-geos=$HOME/local_libs/install make -j4 make install cd ..
2. 设置环境变量,让R找到本地依赖
在终端执行以下命令(可加入~/.bashrc永久生效):
export LD_LIBRARY_PATH=$HOME/local_libs/install/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=$HOME/local_libs/install/lib/pkgconfig:$PKG_CONFIG_PATH
3. 重新安装sf包
启动R,执行以下命令:
install.packages("sf", configure.args = c( "--with-gdal-config=$HOME/local_libs/install/bin/gdal-config", "--with-geos-config=$HOME/local_libs/install/bin/geos-config", "--with-proj-include=$HOME/local_libs/install/include", "--with-proj-lib=$HOME/local_libs/install/lib" ))
4. 安装monocle3
sf安装成功后,再安装monocle3:
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("monocle3")
备选方案:使用预编译的二进制包
如果本地编译依赖太麻烦,可以尝试使用pak包安装预编译的sf二进制包:
install.packages("pak") pak::pkg_install("sf", binary = TRUE)
注:此方法依赖CRAN提供对应Ubuntu 18.04和R4.2的二进制包,若不存在则仍需本地编译。
内容的提问来源于stack exchange,提问作者Zayne Knuth
相关产品推荐
相关产品推荐

