remotes::system_requirements("ubuntu-18.04", package = "DescTools")
[1] "apt-get install -y libssl-dev"
[2] "apt-get install -y zlib1g-dev"
[3] "apt-get install -y libcurl4-openssl-dev"
Johannes Titz
April 20, 2023
In unseren R-Kursen kommt es hin und wieder mal vor, dass Studierende Probleme bei der Installation von Paketen haben. Meist unter GNU/Linux, da dort die Systemabhängigkeiten schwer zu handlen sind. Es gibt so viele Linux-Distributionen, dass die Abhängigkeiten nicht automatisch gemanagt werden können. Wie sehen typische Fehler aus? Gerade kam über OPAL ein gutes Beispiel, bei dem eine Studentin versucht hat DescTools
zu installieren. Dies ist mit folgender Meldung gescheitert:
> install.packages("DescTools") Installing package into ‘/afs/tu-chemnitz.de/home/urz/f/fasic/R/x86_64-pc-linux-gnu-library/4.0’ (as ‘lib’ is unspecified) also installing the dependencies ‘curl’, ‘httr’ versuche URL 'https://cloud.r-project.org/src/contrib/curl_5.0.0.tar.gz' Content type 'application/x-gzip' length 682047 bytes (666 KB) ================================================== downloaded 666 KB versuche URL 'https://cloud.r-project.org/src/contrib/httr_1.4.5.tar.gz' Content type 'application/x-gzip' length 160874 bytes (157 KB) ================================================== downloaded 157 KB versuche URL 'https://cloud.r-project.org/src/contrib/DescTools_0.99.48.tar.gz' Content type 'application/x-gzip' length 2635756 bytes (2.5 MB) ================================================== downloaded 2.5 MB * installing *source* package ‘curl’ ... ** Paket ‘curl’ erfolgreich entpackt und MD5 Summen überprüft ** using staged installation Package libcurl was not found in the pkg-config search path. Perhaps you should add the directory containing `libcurl.pc' to the PKG_CONFIG_PATH environment variable No package 'libcurl' found Package libcurl was not found in the pkg-config search path. Perhaps you should add the directory containing `libcurl.pc' to the PKG_CONFIG_PATH environment variable No package 'libcurl' found Using PKG_CFLAGS= Using PKG_LIBS=-lcurl --------------------------- [ANTICONF] -------------------------------- Configuration failed because libcurl was not found. Try installing: * deb: libcurl4-openssl-dev (Debian, Ubuntu, etc) * rpm: libcurl-devel (Fedora, CentOS, RHEL) If libcurl is already installed, check that 'pkg-config' is in your PATH and PKG_CONFIG_PATH contains a libcurl.pc file. If pkg-config is unavailable you can set INCLUDE_DIR and LIB_DIR manually via: R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...' -------------------------- [ERROR MESSAGE] ---------------------------:1:10: fatal error: curl/curl.h: Datei oder Verzeichnis nicht gefunden compilation terminated. -------------------------------------------------------------------- ERROR: configuration failed for package ‘curl’ * removing ‘/afs/tu-chemnitz.de/home/urz/f/fasic/R/x86_64-pc-linux-gnu-library/4.0/curl’ Warning in install.packages : installation of package ‘curl’ had non-zero exit status ERROR: dependency ‘curl’ is not available for package ‘httr’ * removing ‘/afs/tu-chemnitz.de/home/urz/f/fasic/R/x86_64-pc-linux-gnu-library/4.0/httr’ Warning in install.packages : installation of package ‘httr’ had non-zero exit status ERROR: dependency ‘httr’ is not available for package ‘DescTools’ * removing ‘/afs/tu-chemnitz.de/home/urz/f/fasic/R/x86_64-pc-linux-gnu-library/4.0/DescTools’ Warning in install.packages : installation of package ‘DescTools’ had non-zero exit status The downloaded source packages are in ‘/tmp/RtmpJh9T8H/downloaded_packages’
Sehr kryptisch oder? Auf jeden Fall, aber wenn man genauer hinschaut, sieht man wo das Problem ist:
Configuration failed because libcurl was not found. Try installing: * deb: libcurl4-openssl-dev (Debian, Ubuntu, etc) * rpm: libcurl-devel (Fedora, CentOS, RHEL)
Es fehlt also eine Systempaket, nämlich libcurl. Unter Debian und Derivaten heißt das Paket libcurl4-openssl-dev, also installiert man es wahrscheinlich so:
apt-get install libcurl4-openssl-dev
Unter anderen Systemen kann das Paket anders heißen und ist dann entsprechend mit dem Paket-Manager zu installieren. Für Fedora und Co libcurl-devel.
So lassen sich meistens die Installationsprobleme beheben. Wie immer gilt: genau die Fehlermeldung lesen, meist verrät sie einem was zu tun ist.
Man kann natürlich auch einfach die notwendigen Pakete lokal installieren und dann die $PATH-Variable ergänzen (dazu ggf. mehr bei einem neuen Blogeintrag). Bei uns im URZ ist es aber kein Problem anzufragen, dass System-Pakete nachinstalliert werden. Damit man nicht ständig die Leute belästigt, sollte man vorab herausfinden, ob es noch weitere Abhängigkeiten gibt. Das geht am einfachsten mit dem Paket remotes
:
remotes::system_requirements("ubuntu-18.04", package = "DescTools")
[1] "apt-get install -y libssl-dev"
[2] "apt-get install -y zlib1g-dev"
[3] "apt-get install -y libcurl4-openssl-dev"
Wir haben hier einfach mal Ubuntu als System eingegeben, da sich dies mit Debian überschneiden sollte. Jetzt einfach eine Mail ans URZ mit den Paketen und dann sollte es demnächst kein Problem mehr sein DescTools
zu installieren.