离线安装Rgdal包报错:projects.h文件不存在
解决离线安装R包rgdal时的
projects.h缺失错误 这个错误我之前帮不少人处理过,本质是rgdal编译源码时找不到PROJ地理投影库的核心头文件projects.h——rgdal依赖GDAL和PROJ这两个底层地理空间库的开发文件,离线环境下这些依赖不会自动安装,所以才会触发报错。给你一步步来的解决方案:
1. 确认所需的系统依赖包
根据服务器的系统类型,对应的开发包有所不同:
- 若使用CentOS/RHEL这类RPM系系统:需要安装
proj-devel和gdal-devel两个包(包含编译rgdal必需的头文件与库文件) - 若使用Debian/Ubuntu这类DEB系系统:对应的是
libproj-dev和libgdal-dev
2. 离线获取并安装依赖包
因为服务器未联网,你需要在一台与服务器系统版本完全一致的联网机器上下载这些包(包括所有依赖项),再传到离线服务器安装:
- CentOS/RHEL操作流程:
先确保已安装yum-utils,然后执行以下命令下载所有相关RPM包:
将下载好的所有RPM包传到离线服务器,执行安装命令:yumdownloader --resolve proj-devel gdal-develrpm -ivh *.rpm - Debian/Ubuntu操作流程:
执行以下命令下载所有相关DEB包:
将下载好的DEB包传到离线服务器,执行安装命令:apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances libproj-dev libgdal-dev | grep -E '^\w+')
若出现依赖问题,需提前下载缺失的依赖包再重新安装。dpkg -i *.deb
3. 重新编译安装rgdal
依赖包安装完成后,回到R环境重新执行你的安装命令:
install.packages("rgdal_1.2-15.tar.gz","/usr/lib64/R/library/",repos=NULL)
特殊情况:手动编译安装GDAL/PROJ的处理
如果你不是通过系统包管理器安装的GDAL和PROJ,而是手动编译源码部署的,需要在安装rgdal时明确指定库与头文件的路径,示例如下:
install.packages("rgdal_1.2-15.tar.gz","/usr/lib64/R/library/",repos=NULL, configure.args=c("--with-gdal-lib=/usr/local/lib", "--with-gdal-include=/usr/local/include/gdal", "--with-proj-lib=/usr/local/lib", "--with-proj-include=/usr/local/include/proj"))
请将上述路径替换为你实际安装GDAL和PROJ的路径。
内容的提问来源于stack exchange,提问作者Carole
相关产品推荐
相关产品推荐

