2017-01-09 15 views
0

Ich versuche, das Paket krb5 aus der Quelle auf Rforge rforge zu installieren.Gebäude R-Paket krb5 aus Quelle

Dazu verwende ich den folgenden Befehl innerhalb RStudio (1.0.136) mit R (3.3.1) auf 7. Windows

install.packages("krb5",,"http://rforge.net/",type="source") 

Leider führt dies zu dem folgenden Fehler:

* installing *source* package 'krb5' ... 
** libs 

*** arch - i386 
c:/Rtools/mingw_32/bin/gcc -I"C:/PROGRA~1/R/R-33~1.1/include" -DNDEBUG  -I"d:/Compiler/gcc-4.9.3/local330/include"  -O3 -Wall -std=gnu99 -mtune=core2 -c k.c -o k.o 
k.c:1:18: fatal error: krb5.h: No such file or directory 
#include <krb5.h> 
       ^
compilation terminated. 
make: *** [k.o] Error 1 
Warnung: Ausführung von Kommando 'make -f "Makevars" -f "C:/PROGRA~1/R/R-33~1.1/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-33~1.1/share/make/winshlib.mk" SHLIB="krb5.dll" OBJECTS="k.o"' ergab Status 2 
ERROR: compilation failed for package 'krb5' 
* removing 'C:/Users/Fabian Desktop/Documents/R/win-library/3.3/krb5' 
Warning in install.packages : 
    running command '"C:/PROGRA~1/R/R-33~1.1/bin/x64/R" CMD INSTALL -l "C:\Users\User\Documents\R\win-library\3.3" C:\Users\User\AppData\Local\Temp\RtmpCOnG2U/downloaded_packages/krb5_0.1.tar.gz' had status 1 
Warning in install.packages : 
    installation of package ‘krb5’ had non-zero exit status 

Es scheint, als ob die Datei "krb5.h" nicht gefunden wurde. Dies ist sinnvoll, da das Paket auf dem Kerberos-Projekt von MIT erstellt und verfügbar ist here.

Das Problem, mit dem ich konfrontiert bin, ist, dass ich nie ein C-Projekt gebaut habe. Daher weiß ich nicht, wie ich die beiden Projekte "kombinieren" soll oder wo ich das MIT-Projekt zum R-Paket hinzufügen soll, damit es beim Bau des R-Pakets verfügbar ist. Eine kurze Schritt-für-Schritt-Anleitung, die ich machen sollte, um diese Arbeit zu machen, wird sehr geschätzt.

Antwort

1

Vorbehalt: Ich weiß nichts über die Besonderheiten des Pakets krb5. Aber lesen Sie weiter ...

Ein übliches Muster mit Rcpp-Paket ist, dass sie Schnittstellen zwischen R einerseits und eine externe Bibliothek andererseits sind.

Um Code zu kompilieren, der zwei solche Welten verbindet, benötigen Sie Header-Dateien und Bibliotheken von beiden. R deckt seine eigene Seite ab.

Aber krb5 wahrscheinlich gibt Ihnen nur die Fähigkeit, Kerboros Backends zu sprechen, vorausgesetzt, Sie haben Kerberos (Entwicklung) Software installiert. Mit anderen Worten, krb5 ist wahrscheinlich ein Gateway Kerberos, nicht Kerberos selbst.

+0

Vielen Dank @Dirk Eddelbuettel. Ja, ein 'Gateway' ist was ich suche, das ist in Ordnung. Ich fragte mich, ob ich a) zuerst die externe Bibliothek (für sich selbst) erstellen und dann die Ergebnisse für das erstellte R-Paket einbinden muss. Oder b) (das ist, was ich denke) schließe ich die externe Quelle irgendwo im Paket ein und baue sie "zusammen"? Wenn das zweite wahr ist: Haben Sie einen Hinweis, wo die externen Quelldateien in das Paket gestellt werden, damit sie gefunden werden. –

+0

Nicht sicher, ob Sie das schon einmal gemacht haben, aber im Allgemeinen ist es "ja und ja". Die Bibliothek, mit der verlinkt werden soll, muss von irgendwo kommen (dh Sie erstellen es) und das Paket muss wissen, wo es ist (unter Unix verwenden wir oft 'configure', unter Windows werden manchmal Umgebungsvariablen verwendet). Nun: es soll krb5 unter Windows baubar sein? Nicht alle Pakete sind ... –

+0

Danke! Die externe Bibliothek kann unter Windows erstellt werden (es gibt eine Readme-Datei für den Gewinn), auch wenn dies (zumindest für mich) nicht sehr einfach zu sein scheint. Ich bin mir nicht sicher über das R-Paket. In diesem Fall verstehe ich Ihre Antwort wie folgt: 1. Erstellen Sie die externe Bibliothek (in einer DLL auf Windows). 2. Diese DLL und einige Header-Dateien müssen dann für den R-Paket-Build verfügbar sein. Mein erster Gedanke, dass die externen (nicht kompilierten) Quelldateien in das R-Paket aufgenommen werden können und das R-Paket "direkt" erstellt wird, scheint falsch zu sein. Recht? –