Ubuntu升级GDAL至2.2.2后R中rgdal无法加载的问题求助
解决Ubuntu升级GDAL 2.2.2后rgdal包无法加载的问题
我来帮你搞定这个头疼的问题!这种系统GDAL版本更新后,R的rgdal包因为版本不兼容导致lazy-load数据库损坏的情况很常见,试试下面这些步骤:
步骤1:彻底清理旧的rgdal包
首先要把现有的rgdal完全卸载,包括残留的文件,避免干扰新安装:
- 在R控制台运行:
remove.packages("rgdal") - 然后打开Ubuntu终端,手动删除rgdal的库目录(替换成你的实际路径):
sudo rm -rf /home/R/x86_64-pc-linux-gnu-library/3.3/rgdal - 顺便检查有没有残留的缓存文件,比如
rgdal.rdb或rgdal.rdx,找到后一并删除。
步骤2:确保系统GDAL依赖完整
升级GDAL后,可能有些开发依赖包没装全,先补全:
在终端运行:
sudo apt-get update sudo apt-get install libgdal-dev libproj-dev libgeos-dev
验证GDAL版本是否正确:
gdal-config --version
确认输出是2.2.2再继续。
步骤3:从源码编译安装匹配版本的rgdal
预编译的rgdal包可能和你的系统GDAL版本不兼容,所以必须源码编译:
- 打开R控制台,先设置编译环境变量,让R找到系统的GDAL:
(如果你的GDAL配置文件不在这个路径,用Sys.setenv("PKG_CONFIG_PATH"="/usr/lib/pkgconfig/")which gdal-config查看实际位置,调整路径) - 然后源码安装rgdal,指定GDAL的配置路径:
注意:这里的路径要和你的系统实际情况匹配,比如install.packages( "rgdal", type="source", configure.args="--with-gdal-config=/usr/bin/gdal-config --with-proj-include=/usr/include/proj --with-proj-lib=/usr/lib" )/usr/bin/gdal-config是gdal-config的位置,/usr/include/proj是proj头文件路径,/usr/lib是proj库文件路径。
步骤4:验证安装
安装完成后,重启R会话,然后加载rgdal:
library(rgdal)
如果没有报错,就说明问题解决了!
为什么会出现这个问题?
rgdal是直接依赖系统GDAL库的,当你升级了系统的GDAL版本,原来的rgdal包是基于旧GDAL编译的,两者的接口不匹配,就会导致lazy-load数据库损坏。单纯升级rgdal如果用的是预编译包,可能还是和你的GDAL版本不兼容,所以源码编译是最可靠的解决方法。
内容的提问来源于stack exchange,提问作者user13317
相关产品推荐
相关产品推荐

