How to solve "Error: libudunits2.a not found" when installing "udunits2" in R 3.6.0 from Linux?

How to solve "Error: libudunits2.a not found" when installing "udunits2" in R 3.6.0 from Linux?

我尝试在 Linux 中安装 udunits2(因为我需要 sf 包):

install.packages("/panfs/roc/groups/5/.../udunits2_0.13.tar.gz", repos=NULL, type ="source")

但我收到此错误消息:

(as ‘lib’ is unspecified)
* installing *source* package ‘udunits2’ ...
** package ‘udunits2’ successfully unpacked and MD5 sums checked
** using staged installation
checking for gcc... /panfs/roc/msisoft/gcc/8.1.0/bin/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /panfs/roc/msisoft/gcc/8.1.0/bin/gcc accepts -g... yes
checking for /panfs/roc/msisoft/gcc/8.1.0/bin/gcc option to accept ISO C89... none needed
checking for XML_ParserCreate in -lexpat... yes
...
checking for stdint.h... yes
checking for unistd.h... yes
checking udunits2.h usability... no
checking udunits2.h presence... no
checking for udunits2.h... no
checking for ut_read_xml in -ludunits2... no
-----Error: libudunits2.a not found-----
     If the udunits2 library is installed in a non-standard location,
     use --configure-args='--with-udunits2-lib=/usr/local/lib' for example,
     or --configure-args='--with-udunits2-include=/usr/include/udunits2'
     replacing paths with appropriate values for your installation.
     You can alternatively use the UDUNITS2_INCLUDE and UDUNITS2_LIB
     environment variables.
     If udunits2 is not installed, please install it.
     It is required for this package.
ERROR: configuration failed for package ‘udunits2’
* removing ‘/panfs/roc/groups/5/.../R/x86_64-pc-linux-gnu-library/3.6/udunits2’
Warning message:
In install.packages("/panfs/roc/groups/5/.../udunits2_0.13.tar.gz",  :
  installation of package ‘/panfs/roc/groups/5/.../udunits2_0.13.tar.gz’ had non-zero exit status
>

然后我尝试了 installing:libudunits2-dev、libgdal-dev、libgeos-dev 和 libproj-dev。但它们中的任何一个都可用于 R 版本 3.6.0。

有人有什么建议吗?我试了很多东西都没有成功。非常感谢!

你误解了sf的依赖。 SF 需要 GDAL 才能执行。在 Linux 中,特别是 Ubuntu,这需要安装 Ubuntu 软件包:libudunits2-dev、libgdal-dev、libgeos-dev 和 libproj-dev。

然而,udunits2 是一个 R 包,它也依赖于 Ubuntu 的 libudunits2。安装SF不需要安装udunits2

如 ibusett 的评论 link 中所述,您可以执行此操作:

apt-get -y update && apt-get install -y  libudunits2-dev libgdal-dev libgeos-dev libproj-dev

或:

sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev 

在 Ubuntu 的终端上,而不是你的 R 控制台。

郑重声明,如果您使用的是 conda,那就是问题所在。使用conda deactivate然后尝试安装包,对我来说解决了(当然我已经安装了artidata提到的包)