terra包加载报错解决
编辑
背景
最近要分析单细胞转录组学数据,使用monocle3包前需要安装一些依赖,其中包含terra包,使用conda环境安装后,加载时报错。
library(terra)
unable to load shared object '/share/Software/miniconda3/envs/r4-base/lib/R/library/terra/libs/terra.so': /lib64/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /share/Software/miniconda3/envs/r4-base/lib/R/library/terra/libs/../../../../libgdal.so.31)
解决方案
1.
在网上搜索很多网页都是解决这个软连接的问题,但是尽管换好了,但是还是报相同的错误,最后通过conda环境安装了gcc12版本,解决了这个error。
conda install -c conda-forge gcc=12.1.0
2.
再加载terra,报新的错误:
unable to load shared object '/share/Software/miniconda3/envs/r4-base/lib/R/library/terra/libs/terra.so': /lib64/libz.so.1: version ZLIB_1.2.9' not found (required by /share/Software/miniconda3/envs/r4-base/lib/R/library/terra/libs/../../../.././libpng16.so.16)`
这个时候就用到前面替换软连接的方案了,先去编译安装zlib对应版本,再去安装路径中lib中找到对应libz.so.1.2.9链接去需要的路径,代码如下。
cp /share/Software/zlib-1.2.9/libz.so.1.2.9 /lib64
rm /lib64/libz.so.1
ln -s /lib64/libz.so.1.2.9 /lib64/libz.so.1
3.
再加载terra,问题依旧未解决,这个时候我检查了链接支持的zlib版本
strings /lib64/libz.so.1 | grep ZLIB
是存在`ZLIB_1.2.9'的,我再conda命令行直接敲了R,运行进去可以加载terra,但是前面不能通过rstudio-server加载。退出rstudio-server重新进去,又可以加载了。
初步认为是因为rstudio-server在这一步未及时更新到软连接,在我命令行运行R后,相当于提醒他更新了软连接。再重新登录rstudio-server就可以检测到了。
这个原因或许也是前一步GLIBCXX_3.4.30软链接更新完没有作用的源头。(此处为猜测,待检验,如果有人测试ok,可以在评论区留言哈,谢谢。)
再加载terra,报新的错误:
/share/Software/miniconda3/envs/r4-base/lib/R/library/terra/libs/../../../../libgdal.so.31: undefined symbol: sqlite3_column_table_name
这一块是sqlite的编译问题,重新下载编译,代码如下
wget https://www.sqlite.org/2022/sqlite-autoconf-3390200.tar.gz
tar -xvf sqlite-autoconf-3390200.tar.gz
cd sqlite-autoconf-3390200/
vim sqlite3.c
注意以下内容保存
#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
#define SQLITE_ENABLE_COLUMN_METADATA 1 //注意这行,需要添加,保存后退出
./configure
make
make install
再加载terra,一个小提醒,不算报错,但也是直接安装个R包codetools就解决了。至此,terra终于成功加载上了。
code for methods in class “Rcpp_SpatVectorProxy” was not checked for suspicious field assignments (recommended package ‘codetools’ not available?)
总之来说,一波三折,分享给大家。
- 0
- 0
-
赞助
支付宝
微信
-
分享