Search code examples
linuxr-sf

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


I tried to install udunits2 (because I need the sf package) in Linux by using:

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

But I´m getting this error message:

(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
>

Then I tried installing:libudunits2-dev, libgdal-dev, libgeos-dev and libproj-dev. But any of them are available for R version 3.6.0.

Does anyone have a suggestion? I´ve tried so many things without success. Many thanks in advance!


Solution

  • You have misunderstood sf's dependencies. SF's required GDAL to perform. In Linux, specifically Ubuntu, this required installation of Ubuntu packages : libudunits2-dev, libgdal-dev, libgeos-dev and libproj-dev.

    Whereas, udunits2 is an R package which also depends on Ubuntu's libudunits2. There is no need to install udunits2 for the installation of SF.

    As mentioned in the ibusett's comment link, you can either execute this:

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

    Or :

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

    On Ubuntu's terminal, not your R's console.