Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Demonstrate the XML package requiring libxml to be loaded.Goal: Installing some R packages requires understanding what libraries are available on the System.

...

Table of Contents
stylenone

...

Start a new Session and Start R

Code Block
[]$ module purge
[]$ module load gcc/13.2.0 r/4.4.0
[]$ R
R version 4.4.0 (2024-04-24) -- "Puppy Cup"
...

...

Try Installing R XML Package

Code Block
> install.packages("XML")
...
checking for xml2-config... /apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/bin/xml2-config
...
Located parser file -I/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/include/libxml2 -I/apps/u/spack/gcc/13.2.0/libiconv/1.17-3dj22ny/include/parser.h
Checking for 1.8:  -I/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/include/libxml2 -I/apps/u/spack/gcc/13.2.0/libiconv/1.17-3dj22ny/include
Using libxml2.*
checking for gzopen in -lz... yes
checking for xmlParseFile in -lxml2... yes
You are trying to use a version 2.* edition of libxml but an incompatible library. The header files and library seem to be
mismatched. If you have specified LIBXML_INCDIR, make certain to also specify an appropriate LIBXML_LIBDIR if the 
libxml2 library is not in the default directories.
ERROR: configuration failed for package ‘XML’
* removing ‘/cluster/medbow/home/<username>/R/x86_64-pc-linux-gnu-library/4.4/XML’
...
Note

What does the error message mean?

...

How to Resolve XML Package Issue

Info

We can see from the CRAN package XML description that from the System Requirements we require: libxml2 (>= 2.6.3)

Info

We can see that the libxml2 library is available and is being picked up.

Code Block
[]$ ml
Currently Loaded Modules:
...
 15) libxml2/2.10.3              56) nghttp2/1.57.0
...

Install location: /apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi

Info

Sometimes the cause of the error isn’t obvious.

Try Googling to look for suggestions: Can not install XML package

Code Block
# Withi R:
> Sys.setenv(XML_CONFIG="/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/bin/xml2-config")
> install.packages('XML', configure.args=c('--with-libxml2=/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/bin/xml2-config LIBXML_LIBDIR=-L/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/lib/ LIBXML_INCDIR=/apps/u/spack/gcc/13.2.0/libxml2/2.10.3-5toq4pi/include/libxml2/'))
Installing package into ‘/cluster/medbow/home/salexan5/R/x86_64-pc-linux-gnu-library/4.4’
...
* DONE (XML)

...

Install the R sf Package

Info

Reading the CRAN sf definition page, take note of the system requirements:

System Requirements: GDAL (>= 2.0.1), GEOS (>= 3.4.0), PROJ (>= 4.8.0), sqlite3

What do we already have loaded?

Code Block
[]$ ml
Currently Loaded Modules:
...
 35) sqlite/3.43.2               76) scrnsaverproto/1.2.2
...
Info

We also need to manually load:

Code Block
[]$ module load gdal/3.7.3 geos/3.12.0 proj/9.2.1

...

Install the R sf Package: Fails

Code Block
> install.packages("sf")
...
also installing the dependencies ‘proxy’, ‘MASS’, ‘e1071’, ‘class’, ‘KernSmooth’, ‘wk’, ‘classInt’, ‘DBI’, ‘Rcpp’, ‘s2’, ‘units’
...
--------------------------------------------------------------------------------
  Configuration failed because libudunits2.so was not found. Try installing:
    * deb: libudunits2-dev (Debian, Ubuntu, ...)
    * rpm: udunits2-devel (Fedora, EPEL, ...)
    * brew: udunits (OSX)
  If udunits2 is already installed in a non-standard location, use:
    --configure-args='--with-udunits2-lib=/usr/local/lib'
  if the library was not found, and/or:
    --configure-args='--with-udunits2-include=/usr/include/udunits2'
  if the header was not found, replacing paths with appropriate values.
  You can alternatively set UDUNITS2_INCLUDE and UDUNITS2_LIBS manually.
--------------------------------------------------------------------------------
ERROR: configuration failed for package ‘units’
...

...

Do we have a udunits module?

Code Block
[]$ module spider udunits
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  udunits: udunits/2.2.28
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    You will need to load all module(s) on any one of the lines below before the "udunits/2.2.28" module is available to load.
      arcc/1.0  gcc/13.2.0
    Help:
      Automated units conversion
Code Block
[]$ module load udunits/2.2.28

# Within R
> install.packages("sf")
...
* DONE (sf)

> library(sf)
Linking to GEOS 3.12.0, GDAL 3.7.3, PROJ 9.2.1; sf_use_s2() is TRUE
Info

Recommendation: When ever you want to use this R package, additionally load:

Code Block
[]$ module purge
[]$ module load gcc/13.2.0 r/4.4.0
[]$ module load gdal/3.7.3 geos/3.12.0 proj/9.2.1 udunits/2.2.28

...