安装R的依赖包时出现错误:找不到gdal-config,尽管已安装gdal

138
请指出我所忽略的要点: openSUSE 11.3
xx@linux-y3pi:~/Desktop/R> sudo R CMD INSTALL rgdal_0.7-12.tar.gz 
root's password:
* installing to library ‘/usr/lib64/R/library’
* installing *source* package ‘rgdal’ ...
** package ‘rgdal’ successfully unpacked and MD5 sums checked
configure: gdal-config: gdal-config
checking gdal-config usability... ./configure: line 1353: gdal-config: command not found
no
Error: gdal-config not found
The gdal-config script distributed with GDAL could not be found.
If you have not installed the GDAL libraries, you can
download the source from  http://www.gdal.org/
If you have installed the GDAL libraries, then make sure that
gdal-config is in your path. Try typing gdal-config at a
shell prompt and see if it runs. If not, use:
 --configure-args='--with-gdal-config=/usr/local/bin/gdal-config'
with appropriate values for your installation.

ERROR: configuration failed for package ‘rgdal’
* removing ‘/usr/lib64/R/library/rgdal’

xx@linux-y3pi:~/Desktop/R> whereis gdal-config
gdal-config: /usr/local/bin/gdal-config

xx@linux-y3pi:~/Desktop/R> gdal-config 
Usage: gdal-config [OPTIONS]
Options:
 [--prefix[=DIR]]
 [--libs]
 [--dep-libs]
 [--cflags]
 [--datadir]
 [--version]
 [--ogr-enabled]
 [--formats]
 xx@linux-y3pi:~/Desktop/R>

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
> 

xx@linux-y3pi:~/Desktop/R> gdal-config --version
1.9.0

xx@linux-y3pi:~/Desktop/R> proj
Rel. 4.8.0, 6 March 2012
usage: proj [ -beEfiIlormsStTvVwW [args] ] [ +opts[=arg] ] [ files ]

linux-y3pi:~ # $PATH
bash: /home/xx/qtsdk-2010.05/qt/bin/:/home/xx/qtsdk-2010.05/bin:/home/xx/qtsdk-2010.05/qt/bin:/home/xx/qtsdk-2010.05/qt/bin/:/home/xx/qtsdk-2010.05/bin:/usr/lib64/mpi/gcc/openmpi/bin:/home/xx/bin:/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games: No such file or directory

哎呀!which gdal-config 返回 /usr/local/bin/gdal-config 但是 sudo which gdal-config 返回 which: no gdal-config in (/sbin:/bin:/usr/sbin:/usr/bin) - Brian D
10个回答

188

在Ubuntu 18.04中

我通过sudo apt install libgdal-dev修复了这个问题。希望对某些人有所帮助。一些之前的答案似乎已经过时且太冗长。

在早期版本中(使用apt-get)

sudo apt-get install libgdal-dev


4
在我的Ubuntu 18.04和R版本3.4.4(2018-03-15)中,这个方法对我有效。 - fvfaleiro
4
对我有用(在Ubuntu 18.04和R 3.6.3上)。安装rgdal时不需要“sudo apt-get install libproj-dev”。 - Mansi
12
在Ubuntu 20.04上对我有用。 - Douglas Ferreira
3
在尝试安装sf软件包并出现类似错误时,这个方法适用于我在Ubuntu 18.04.4和R 4.0.2上的操作。 - Santiago Capobianco
2
直到我使用apt安装了libudunits2-dev,它在Ubuntu 20.04上对我不起作用。 - bshor
显示剩余4条评论

105
你需要在开发时除了安装常规的部署包之外,还需要安装带有头文件和共享库链接的-dev包。从发行版的角度来看,这是两个不同的用例。
在我的发行版中:
edd@max:/tmp$ dpkg -l | grep gdal | cut -c-72
ii  libgdal1-1.7.0                                1.7.3-6ubuntu3        
ii  libgdal1-dev                                  1.7.3-6ubuntu3        
edd@max:/tmp$ 

使用 R CMD INSTALL rgdal_0.7-8.tar.gz 安装RGDAL包,像CRAN提供的其他软件包一样,在CRAN构建检查时都会进行验证,可以正常工作。

2016年底更新: 正如@JoshO'Brien在评论中指出的那样,运行Ubuntu 14.04.2时,libgdal1h似乎已经取代了libgdal1(尽管仍需要libgdal1-dev),当我尝试运行apt-get install libgdal1时会收到错误提示。

对于Ubuntu 16.04,相应的命令为
sudo apt-get install libgdal1i

更名上游库是很常见的操作,例如通过命令apt-cache search libgdal可查找当前软件包名称。然而,重要的是 只需要安装"抽象的"开发包libgdal-dev即可完成编译,它会通过依赖关系引入“具体”的当前运行时软件包(此处为libgdal1i)。


1
小更新:在2016年,运行Ubuntu 14.04.2时,libgdal1h似乎已经取代了libgdal1(尽管仍需要libgdal1-dev)。当我尝试apt-get install libgdal1时,至少会出现这样的错误。 - Josh O'Brien
3
感谢您指我朝正确的方向。由于现在已经是2018年,不是每个人都使用基于Debian的系统,因此在Arch Linux上,诀窍在于执行# pacman -Syu gdal命令,从community/gdal下载栅格化库。 - Cbhihe
@BrianStamper 当然可以,但您要意识到这个答案已经八年了,所以目前正确的设置可能会随着时间而变化。 - Dirk Eddelbuettel
2
我希望你明白2012年已经过去了8年。我希望你能看到答案已经在2016年为Ubuntu 16.04编辑过,以及在2018年添加了另一个答案。你需要理解的关键是像apt-cache search libgdal这样的工具可以在任何时间点找到“当时的”名称。这比你不理解就复制粘贴标准答案要有用得多。因为那些答案会逐渐过时。 - Dirk Eddelbuettel

39
你可以使用apt-file软件包来查找包含你所寻找的缺失文件的包。
首先使用命令apt-get install apt-file来安装apt-file。
使用命令apt-file update来更新apt-file。
现在你可以使用apt-file来查找缺失的文件。apt-file search gdal-config

对于我的情况,当我从svn配置grass-7.1时,我遇到了相同的错误。如下所示:
$ ./configure
...more...
checking whether to use GDAL... yes
checking for gdal-config... /usr/bin/gdal-config
              ...more....
./configure: 1: ./configure: /usr/bin/gdal-config: not found
./configure: 6093: test: =: unexpected operator
configure: error: *** Unable to locate GDAL library.

但是,在使用apt-file查找gdal-config文件后,如下所示,我成功解决了错误,安装了libgdal1-dev软件包。
$ apt-file search gdal-config

结果
libgdal1-dev: /usr/bin/gdal-config

所以我安装了libgdal1-dev,如下所示:
$ sudo apt-get install libgdal1-dev

12
这个方法解决了错误,但我还需要执行sudo apt-get install libproj-dev来安装rgdal。参见https://dev59.com/E2Up5IYBdhLWcg3wdnl6。 - geneorama
3
我可以确认 libproj-dev 也是必需的。否则,如 @geneorama 所提到的那样,R 将返回 configure: error: proj_api.h not found... - narendra-choudhary
我确认这个方法,包括在评论中提到的软件包,解决了我在Ubuntu 16.04和R 3.4上遇到的问题。 - luchonacho
在Ubuntu 19.10,R 3.6.2中,我只需要运行sudo apt-get install libgdal-dev,不需要安装libproj-dev。注意:应该安装的是libgdal-dev而不是libgdal1-dev - Rui Barradas

18

这是因为“rgdal”软件包的配置失败了,所以我们需要安装必要的依赖项。

要求安装libgdal-dev和libproj-dev软件包:

sudo apt-get install gdal-bin proj-bin libgdal-dev libproj-dev

然后通过以下方式安装rgdal:

install.packages("rgdal")

通过以下方式加载rgdal


library(rgdal)

16

macOS上,运行以下命令安装gdal:

brew install gdal

这将会解决以下错误:

gdal-config not found


1
给其他人的一个提示,运行后请注意终端输出,因为可能还有其他需要做的事情(在安装gdal之前我不得不安装其他东西,并且在安装后我不得不链接它 - 但是brew在输出中告诉了我如何做到这一点)。 - stevec
我还需要安装udunits、geos、proj和gdal。 - ski_squaw
1
在 Apple M1 芯片上,使用 arch -arm64 brew install gdal 可能会有所帮助。 - zabala

6

在CentOS 6上尝试一下这个

sudo yum install gdal gdal-python gdal-devel mapserver mapserver-python libxml2 libxml2-python python-lxml python-pip python-devel gcc

很不幸,在我的CentOS服务器上,sudo yum install gdal-devel失败了,并出现了一长串有关处理依赖项的消息,然后是一堆错误。它们似乎涉及到CentOS 5版本(例如gdal-1.8.0-4.el5.elgis.x86_64),但我使用的是CentOS 6。 - JerryN
6
需要所有这些吗?sudo yum install gdal-devel 不够用吗? - Brian D

4

2
我的Mac Monterrey在执行了brew install gdal之后仍然持续抱怨。
不过,这个GitHub问题中的建议解决了问题。
install.packages("sf", type = "source", configure.args = 
'--with-gdal-lib=/opt/homebrew/opt/gdal/lib/ 
--with-sqlite3-lib=/opt/homebrew/opt/sqlite/lib/ 
--with-gdal-config=/opt/homebrew/bin/gdal-config
--with-proj-share=/opt/homebrew/opt/proj/share/ 
--with-proj-lib=/opt/homebrew/opt/proj/lib 
--with-proj-include=/opt/homebrew/opt/proj/include/
--with-geos-config=/opt/homebrew/opt/geos/bin/geos-config')

1
今天我在一台Linux CentOS 6.10上遇到了同样的问题,但我没有管理员权限。
我的处理方法是:
a)创建一个专门为我的R版本而设计的conda环境。
conda create --name MYR
b) 激活环境
source activate MYR

c) 安装 R

conda install -c conda-forge r-base

d) 安装libgdal

conda install -c conda-forge libgdal

这对我解决了问题。我的 R 版本是 4.1.3。我猜其他版本也应该可以。


0

对于Manjora或ArchLinux,只需尝试: yay -S gdal


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接