错误:安装R相关软件包时未找到gdal-config,但已安装gdal


78

请指出我缺少的一点:

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-configsudo which gdal-config返回which: no gdal-config in (/sbin:/bin:/usr/sbin:/usr/bin)
Brian D

Answers:


88

你需要的-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提供了CRAN的所有构建时检查功能,可以按预期从CRAN程序包中正常工作。

2016年末更新: 正如@ JoshO'Brien在评论中指出

较小更新:在2016年,运行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-devlibgdal1i通过依赖项拉入“具体”当前运行时包(此处:)时所需要的全部内容。


1
较小更新:在2016年,运行Ubuntu 14.04.2的此处libgdal1h似乎已被替换libgdal1(尽管libgdal1-dev仍然需要)。至少当我尝试这样做时,我得到了一个错误apt-get install libgdal1
乔什·奥布莱恩

2
+1使我处于正确的大致方向。而且由于我们现在处于2018年,并不是每个人都在基于Debian的系统上工作,...在Arch linux上,窍门在于# pacman -Syu gdal从中下载光栅化库community/gdal
Cbhihe

@BrianStamper当然,但是您知道答案已经八岁了,所以(当前)正确的设置会随着时间而变化。
Dirk Eddelbuettel

希望您了解2012年是8年前。希望您能阅读如何在2016年为Ubuntu 16.04编辑答案,以及如何在2018年添加另一个答案。他们让你明白这里是类似的电源键apt-cache search libgdal在任何时间点找到当时的名称。从根本上说,这比您在不了解的情况下复制的曲奇切工的答案更有价值。因为cookie确实过时了。
Dirk Eddelbuettel

91

在Ubuntu 18.04中

我修复此问题,sudo apt install libgdal-dev 希望有人能对此有所帮助。上述一些答案似乎已经过时且冗长。

在早期版本中(具有apt-get)

sudo apt-get install libgdal-dev


2
它适用于Ubuntu 18.04和R版本3.4.4(2018-03-15)。
fvfaleiro

3
为我工作(Ubuntu 18.04; R 3.6.3)。不需要“ sudo apt-get install libproj-dev”来安装rgdal。
曼西

是的,对我来说,使用debian-stretch一样
Timothy Dalton

1
在Ubuntu 20.04上为我工作
Douglas Ferreira

在Ubuntu 18.04.4和R 4.0.2中为我工作。尝试安装SF软件包并收到类似错误时。
圣地亚哥Capobianco

35

您可以使用apt-file软件包来查找哪个软件包包含要查找的丢失文件。

首先安装的apt-文件使用命令apt-get install apt-file
更新的apt-文件使用命令apt-file update
现在你可以使用的apt-文件找到丢失的文件。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

11
这样可以解决此错误,但是我还必须sudo apt-get install libproj-dev进行安装rgdal。见stackoverflow.com/questions/15248815/rgdal-package-installation
geneorama

3
我可以确认这libproj-dev也是需要的。configure: error: proj_api.h not found...如@geneorama所述,R否则返回。
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

7

发生这种情况是因为包“ rgdal”的配置失败,因此我们必须安装必要的依赖项。

软件包libgdal-dev和libproj-dev是必需的:

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

然后通过安装rgdal

install.packages("rgdal")

通过加载rgdal

library(rgdal)

7

macOS上

brew install gdal

消除了错误

找不到gdal-config


1
对其他人来说只是一个提示,请在运行它后注意终端输出,因为可能还需要做其他事情(在安装gdal之前我必须安装其他东西,并且在安装后我必须将其链接-但是brew let我知道如何在输出中执行此操作)
stevec


4

在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上安装gdal-devel失败,并显示了一长串有关处理依赖项的消息,然后出现了一系列错误。他们似乎涉及centos 5版本(例如gdal-1.8.0-4.el5.elgis.x86_64),但我关注
centos6。– JerryN

2
我们真的需要所有这些吗? sudo yum install gdal-devel还不够吗
Brian D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.