CentOS 7.9环境下安装R包hydroPSO、sf时proj报错的解决方法
问题根源
proj_normalize_for_visualization 是PROJ 7.0.0及以上版本新增的函数,你当前使用的PROJ 6.0.0不包含该函数,而你要安装的sf版本依赖这个函数,导致编译失败。以下是CentOS Linux release 7.9.2009 (Core)环境下的两种解决方案:
方案一:降级sf到兼容PROJ 6.x的版本
该方案无需升级系统库,操作更简单:
- 先卸载已安装的sf包(如果有):
在R终端执行:remove.packages("sf") - 安装remotes包(用于指定版本安装):
install.packages("remotes") - 安装兼容PROJ 6.x的sf版本(推荐1.0-14,这是最后一批支持PROJ6的稳定版本):
remotes::install_version("sf", version = "1.0-14") - 安装hydroPSO:
install.packages("hydroPSO", dependencies = TRUE)
方案二:升级PROJ到7.x及以上版本
如果需要使用新版sf,可手动编译升级PROJ:
- 安装编译依赖:
sudo yum install -y gcc gcc-c++ cmake make libtiff-devel libcurl-devel sqlite-devel - 从OSGeo官网下载PROJ 7.2.1稳定版源码包,解压后进入目录,执行编译安装:
tar -zxvf proj-7.2.1.tar.gz cd proj-7.2.1 && mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/proj7 make -j4 sudo make install - 配置环境变量,让R识别新PROJ:
echo 'export PROJ_DIR=/usr/local/proj7' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/proj7/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc - 重新安装sf:
在R终端执行:install.packages("sf", configure.args = "--with-proj-lib=/usr/local/proj7/lib --with-proj-include=/usr/local/proj7/include") - 安装hydroPSO:
install.packages("hydroPSO")
额外注意
如果你的R版本低于4.0.0,可能无法兼容新版sf或hydroPSO,建议升级到4.x版本,可通过添加对应第三方软件源完成安装。
内容的提问来源于stack exchange,提问作者Phoebe
相关产品推荐
相关产品推荐

