You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,添加:
    rsession-ld-library-path=/usr/lib/x86_64-linux-gnu/
    
    然后重启RStudio Server:
    sudo systemctl restart rstudio-server
    

5. 验证安装

在R中加载包并测试:

library(sf)
library(rgdal)
# 运行Shiny App测试

内容的提问来源于stack exchange,提问作者denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:53:41