R包Travis CI构建报错但本地devtools::check()无错,如何修改使其通过?
本次构建失败的根本原因是sf、terra、units、raster这类空间分析类R包依赖底层系统库,Travis CI的默认运行环境未预装这些依赖,导致R包安装时报非零退出状态,连带依赖它们的leaflet等包也无法正常安装,最终构建中断。
你需要修改项目根目录下的.travis.yml配置,添加系统依赖安装逻辑,具体修改方案如下:
- 新增apt包安装配置,提前安装所需的系统依赖库,参考配置如下:
language: r sudo: required cache: packages # 以下是新增的系统依赖配置 addons: apt: packages: - libgdal-dev - libgeos-dev - libproj-dev - libudunits2-dev - gdal-bin # 其余原有配置(如R版本、构建脚本等)可以保留 r: - release
- 如果你的R包实际不需要用到空间分析相关功能,可以检查
DESCRIPTION文件中的Imports、Suggests字段,移除不必要的空间类依赖包,无需安装上述系统依赖也可正常构建。
补充说明:你本地执行check()没有报错,是因为你的本地开发环境已经提前安装过上述系统依赖库,而Travis CI每次构建都是全新的干净环境,没有预装这些依赖才会触发错误。
内容的提问来源于stack exchange,提问作者César Arquero Cabral
相关产品推荐
相关产品推荐

