Ubuntu 22.04下安装R包rgdal失败的问题求助
解决Ubuntu 20.04升级至22.04后R空间包(sf/rgdal)依赖库冲突问题
1. 对齐系统依赖库版本
- 先更新系统所有包,确保libproj、libgdal等库为Ubuntu22.04(jammy)的最新版本:
sudo apt update && sudo apt upgrade -y sudo apt install --reinstall libudunits2-dev libgdal-dev libgeos-dev libproj-dev - 验证库版本,确认是jammy对应的版本(libproj-dev ≥9.0,libgdal-dev ≥3.4):
dpkg -l | grep -E "(libproj|libgdal)-dev"
2. 配置CRAN源适配Ubuntu22.04
在R中执行以下命令,确保使用适配jammy的CRAN源,避免安装针对旧系统的二进制包:
options(repos = c(CRAN = "https://cloud.r-project.org/bin/linux/ubuntu/jammy/"))
3. 清理旧包并重新编译安装空间包
卸载旧包并清理缓存
在R中执行:
# 卸载所有相关空间包 remove.packages(c("sf", "rgdal", "sp", "rgeos", "units")) # 清理R编译缓存 system("rm -rf ~/.cache/R/")
编译安装rgdal(解决DOUBLE_EPS未声明错误)
DOUBLE_EPS报错是因为新版本GDAL/proj的头文件中移除了该宏定义,需手动指定编译参数:
- 方法1:终端设置环境变量后安装
export CFLAGS="-DDOUBLE_EPS=1e-12" export CXXFLAGS="-DDOUBLE_EPS=1e-12" Rscript -e "install.packages('rgdal', type='source')" - 方法2:在R中直接设置编译参数
Sys.setenv(CFLAGS = "-DDOUBLE_EPS=1e-12", CXXFLAGS = "-DDOUBLE_EPS=1e-12") install.packages("rgdal", type = "source")
安装sf包
优先使用适配jammy的二进制包,若仍有问题则用源码编译:
install.packages("sf") # 若二进制包仍报错,改用源码编译: # install.packages("sf", type = "source")
4. 修复库加载路径问题
若仍提示找不到libproj.so.26或libgdal.so.26:
- 检查系统库路径,确认库存在:
ldconfig -p | grep -E "(libproj\.so\.26|libgdal\.so\.26)" - 若库存在但R无法加载,手动添加系统库路径到R的环境变量:
Sys.setenv(LD_LIBRARY_PATH = "/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH") - 持久化设置:编辑RStudio Server配置文件
/etc/rstudio/rserver.conf,添加:
然后重启RStudio Server:rsession-ld-library-path=/usr/lib/x86_64-linux-gnu/sudo systemctl restart rstudio-server
5. 验证安装
在R中加载包并测试:
library(sf) library(rgdal) # 运行Shiny App测试
内容的提问来源于stack exchange,提问作者denis
相关产品推荐
相关产品推荐

