Sammlung
Hier sind bisher nur einige wenige Informationen zum Einsatz von R unter FreeBSD zu finden. Die Sammlung soll jedoch im Laufe der Zeit vermehrt werden.
Installieren von R unter FreeBSD 12.0-CURRENT
Für die normale Verwendung von
Im Folgenden wird gezeigt, wie entgegen der Empfehlung aus den Originalquellen (ohne Port) installiert werden kann. Auf diese Weise kann z.B. auch die Entwicklerversion oder jede andere verfügbare Version verwendet werden (siehe Abschnitt B). Da es für diese Vorgehensweise keinen Port gibt, sollten verschiedene Helferprogramme dann im System schon vorher installiert sein, um alle Funktionalitäten unter R nutzen zu können (siehe Abschnitt A).
A. FreeBSD für die Verwendung von R vorbereiten
Viele der auch für R notwendigen Ports werden unter FreeBSD zusammen mit anderen Programmen
(z.B. OpenOffice) installiert. Soweit notwendige Ports noch nicht installiert sind, muss dies
nachgeholt werden. Im FreeBSD Handbuch
kann nachgelesen werden, wie dabei grundsätzlich vorzugehen ist.
Die für R wichtigsten Ports werden hier kurz erläutert:
A.1 Compiler gcc 6.4.0 mit gfortran
Das FreeBSD-System (12.0-CURRENT) selbst arbeitet mit dem neuen Compiler
# cd /usr/ports/lang/gcc48
# make clean && make install
Nur wenn R nicht aus den Ports installiert wurde, ist es zusätzlich notwendig, während der
Aktualisierung von R und seiner Pakete in /etc/make.conf folgende Compiler-Optionen
zu aktivieren, damit nicht nur der
CC= gcc6
CXX= g++6
CPP= cpp6
Bitte nicht vergessen, diese Optionen in /etc/make.conf hinterher wieder
zu deaktivieren (auskommentieren), damit das System und FreeBSD-Ports fehlerfrei gebaut werden können.
Diese benötigen teilweise noch die Version 4.2 des System Compilers.
Vielleicht hat jemand einen Vorschlag, wie das eleganter gelöst werden kann? (Mail-Adresse am Seitenende)
A.2 tcl/tk Scriptsprache
Sollte diese Skriptsprache, erreichbar über die Teilprogramme
# cd /usr/ports/lang/tcl85
# make clean install
# cd /usr/ports/x11-toolkits/tk85
# make clean install
A.3 TeXLive
Über den Meta-Port
A.4 cairo
Wenn R während der Installation
A.5 Java Laufzeitumgebung
Java ist zwar nicht zwingend notwendig, um produktiv mit R arbeiten zu können. Es empfiehlt sich aber,
diese plattformunabhängige Sprache mit einzubinden. Die Installation eines nativen, selbstgebauten
Java (nicht Linux-emuliertes Java) gestaltet sich unter FreeBSD leider immer noch etwas umständlich.
Zum Übersetzen eines nativen Java wird nämlich eine läuffähige Javainstallation für den Bootstrapingcode
benötigt. Dafür empfiehlt es sich, zunächst die
Bevor die
B. Installation von R
Sobald alle wichtigen Helferlein (siehe oben) vorhanden sind, kann es losgehen. Die Installation von R kann entweder über einen Port (math/R) durchgeführt werden oder vollständig manuell, was sich nur wenig aufwändiger gestaltet.
Die
Im Folgenden wird hoffentlich ausführlich genug die
B.1 R Quelldateien besorgen
Es empfiehlt sich schon aus Gründen der Aktualilität und Sicherheit, die gepackte Quelldatei zur
Installation von R aus den Sourcen grundsätzlich nur von einem offiziellen Server (Mirror) aus dem
CRAN (The Comprehensive R Archive Network) zu besorgen.
Für die hier beschriebene Art der Installation muss ein Dateiarchiv herunter geladen werden,
das etwa diesem Namensschema folgt:
R-3.2.3.tar.gz
In dem Beispiel handelt es sich um die R Version 2.15.3, deren Dateien und Verzeichnisse in einem tar-Archiv abgelegt sind, welches zusätzlich mit gzip komprimiert wurde.
B.2 Entpacken der R Quelldateien
Für mich hat es sich bewährt, auch die Dateien des R Systems unter /usr/local/ zu
installieren, so wie es für Drittprogramme unter FreeBSD üblich ist.
# cd /usr/local
# tar xvzfo Pfad_zu_Quellarchiv/R-3.2.3.tar.gz
Nun liegt der gesamte Verzeichnisbaum der Quelldateien ausgepackt unter /usr/local/R-3.2.3.
B.3 Bauen und Installieren des R Systems
# cd /usr/local/R-3.2.3
# ./configure
# make && make install
Das R System ist in die zuständigen Verzeichnisse unter FreeBSD eingebaut worden.
Die meisten Dateien und Verzeichnisse sind unter /usr/local/lib/R zu finden.
Die ausgepackten, für die Installation verwendeten Quelldateien können nun gelöscht werden,
da sie nicht mehr benötigt werden.
# cd ..
# rm -R R-3.2.3
B.4 Nacharbeiten
Unter /usr/local/lib/R/etc/ findet sich die Datei
B.5 Die Installation und das Update von R Packages
Schon bei der Installation des R Systems werden zahlreiche
Installation spezieller Packages in R unter FreeBSD 12.0-CURRENT
Einige wenige Packages können in R unter FreeBSD nicht direkt installiert werden, da es dabei zu verschiedenen Abbrüchen kommen kann. Das liegt meistens daran, dass die Konfiguration im Package nicht ausreichend tolerant nach Libraries und Headers sucht, die aus FreeBSD zusätzlich eingebunden werden sollen.
C.1 Packages, die "GNU make" anstatt des "BSD make" benötigen
Es gibt immer noch eine Anzahl Packages, die mit der BSD-Version von make nicht fehlerfrei bauen.
In diesen Fällen hilft es, vorübergehend die Umgebungsvariable MAKE auf gmake zu setzen. Das kann
etweder in jedem Einzelfall auf Shell-Ebene oder allgemeiner über ein kleines ausführbares Script
gelöst werden, in dem nur die Bezeichnung des betroffenen Packages mit Versionsnummer aktualisiert
werden muss.
#!/bin/tcsh
setenv MAKE gmake
R CMD INSTALL Packagename_Versionsnummer.tar.gz
unsetenv MAKE
Derartige Scripte verwende ich zurzeit für folgende Packages:
C.2 Packages, für die angepasste Konfigurationen notwendig sind
Für mehrere Packages es zur Installation notwendig, zusätzliche Konfigurationsparameter anzugeben.
Das kann in der Regel über einzeilige Aufrufe erfolgen:
# R CMD INSTALL --configure-args='--with-fftw-include=/usr/local/include \
--with-jpeg-include=/usr/local/include' ReadImages_0.1.3.3.tar.gz
# R CMD INSTALL --configure-args='--with-fftw-include=/usr/local/include \
--with-jpeg-include=/usr/local/include' rimage_0.5-8.2.tar.gz
C.3 Package RNetCDF
Das Package RNetCDF benötigt zur Umrechnung verschiedener Einheiten das FreeBSD Package science/udunits, welches vorher installiert werden muss. Da RNetCDF eine ältere Version erwartet, muss zunächst unter Root-Rechten noch folgender Link gesetzt werden. Erst danach kann RNetCDF erfolgreich installiert werden:
ln -s /usr/local/lib/libudunits2.so /usr/local/lib/libudunits.so
C.4 Packages qtbase und qtpaint
Das Package
# git clone http://github.com/ggobi/qtbase.git
Um das R Package unter FreeBSD übersetzen zu können, muss daraufhin die enthaltene Datei src/Makefile.common entweder manuell oder per Patchfile gepatcht werden. Die folgende Datei zeigt die Art der Veränderung und wird mit patch < qtbase-patchfile verwendet (notwendige Tabulatorsteuerzeichen sind hier nicht korrekt dargestellt):
--- qtbase/src/Makefile.common~ 2013-05-08 16:22:05.000000000 +0200
+++ qtbase/src/Makefile.common 2013-05-08 16:48:26.000000000 +0200
@@ -15,7 +15,7 @@
MODULE_LINKER_FLAGS = ${SHLIB_CXXLD_ARGS} ${LDFLAGS}
CMAKE_ARGS += -DR_CXX="${CXX_BIN}" \
- -DCMAKE_CXX_FLAGS="${CXX_ARGS}" \
+ -DCMAKE_CXX_FLAGS="${CXX_ARGS} -fPIC" \
-DCMAKE_SHARED_LINKER_FLAGS="${SHARED_LINKER_FLAGS}"
all:
Außerdem ist es notwendig, zwei Umgebungsvariablen zu setzen und den Pfad zum OpenGL Header anzugeben, damit R CMD INSTALL funktioniert:
# setenv MAKE gmake
# setenv RHOME /usr/local/lib/R
# R CMD INSTALL --configure-args='--extra-cflags=-I/usr/local/include/GL' qtbase
# unsetenv RHOME
# unsetenv MAKE
Das Package
# git clone http://github.com/ggobi/qtpaint.git
# setenv MAKE gmake
# setenv RHOME /usr/local/lib/R
# R CMD INSTALL --configure-args='--extra-cflags=-I/usr/local/include/GL' qtpaint
# unsetenv RHOME
# unsetenv MAKE