离线本地服务器安装rgdal包失败,R抛出不可恢复异常
嘿,我太懂你离线环境下折腾rgdal的痛苦了——手动挨个搞定依赖本身就耗了大把时间,结果还是卡在R这边,这种摸不着头绪的感觉真的让人抓狂。先把你提到的关键信息理清楚:
服务器离线,已手动安装所有相关依赖,执行安装命令:
install.packages("rgdal_1.2-15.tar.gz","/usr/lib64/R/library/",repos=NULL,configure.args="--with-proj-include=/usr/proj49/include/")
仅得到* in...的不完整输出,无法定位具体问题
结合离线安装源码包的常见坑,给你几个排查方向:
先补全完整错误输出
你提到的* in...只是报错的开头,R编译源码包时,后面会跟着具体的错误细节——比如找不到GDAL头文件、PROJ库路径不对、R版本不兼容,甚至是权限问题。一定要把完整的报错日志(尤其是最后10-20行)贴出来,这是精准定位的关键。核对rgdal版本与R版本的兼容性
rgdal_1.2-15是2018年的老版本,它要求R版本≥3.3.0,但也不能太新(比如R4.0+对旧版源码包的编译规则有变化)。先在R里执行version$version.string确认你的R版本是否在兼容范围内。完善PROJ依赖的配置参数
你只指定了PROJ的头文件路径,但R编译时还需要找到PROJ的库文件。检查/usr/proj49/lib/下是否存在libproj.so(或静态库文件),如果存在,把安装命令改成:install.packages("rgdal_1.2-15.tar.gz","/usr/lib64/R/library/",repos=NULL,configure.args="--with-proj-include=/usr/proj49/include/ --with-proj-lib=/usr/proj49/lib/")确认GDAL依赖是否到位
rgdal除了PROJ,核心依赖是GDAL。rgdal_1.2-15要求GDAL版本在1.11.4到2.3.x之间,你是否安装了对应版本的GDAL?如果GDAL的头文件和库文件不在默认路径,需要在configure.args里补充:--with-gdal-include=/path/to/gdal/include --with-gdal-lib=/path/to/gdal/lib排查系统权限与编译工具链
你安装到/usr/lib64/R/library/这个系统级路径,需要root权限才能写入——要么切换root用户执行,要么用sudo R启动R再运行安装命令。另外,离线编译源码包需要系统有完整的编译工具:gcc、g++、make这些必须安装,终端执行gcc --version就能确认。
内容的提问来源于stack exchange,提问作者HISI

