LD_LIBRARY_PATH-Präzision und Schwierigkeiten beim Kompilieren

Ich versuche, einige Software auf einem Linux-Rechner zu installieren (pythons rpy2-Paket, rpy2.robjects insbesondere, wenn es darauf ankommt). Ich brauche die Software, um nach ihren gemeinsamen Bibliotheken in meinem lokalen Raum zu suchen, nicht in den globalen Räumen wie / usr / lib64 was auch immer. Ich habe keine Admin-Berechtigungen auf dieser Maschine. Mein Problem ist, dass, obwohl ich LD_LIBRARY_PATH gesetzt habe, um auf meinen lokalen Raum zu zeigen, geht die Software immer noch auf die / usr / lib64 / was auch immer, wo es Bibliotheken findet, die nicht mehr aktuell sind. Diese Bibliotheken fehlen einige Objekte, die es braucht, also scheitert es. Was könnte Vorrang vor LD_LIBRARY_PATH sein, und gibt es einen Weg, um es zu ändern / loszuwerden? Vielen Dank.

BTW, jemand auf dieser Seite hatte eine ähnliche Frage ein Jahr oder mehr vor, aber seine Antwort beteiligt die env Variable RPATH, und ändern sie mit dem chrpath Dienstprogramm. Es ist mir nicht klar, dass rpy2 RPATH benutzt, und chrpath scheint auf meinem System nicht verfügbar zu sein.

Addendum: Ich habe versucht, mit LD_DEBUG = libs zu laufen. Habe eine Menge von Ausgabe, die aussieht wie das System sucht die libs in meinem LD_LIBRARY_PATH und finden sie. Hier ist die Mühe zu beginnen:

/usr/local/lib64/R/library/methods/libs/methods.so: error: symbol lookup error: undefined symbol: Rf_allocS4Object (fatal) Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/usr/local/lib64/R/library/methods/libs/methods.so': /usr/local/lib64/R/library/methods/libs/methods.so: undefined symbol: Rf_allocS4Object 

Also meine Vermutung ist, dass das Problem ist, dass alles, was in DLLpath ist, LD_LIBRARY_PATH überschreibt. Ich habe versucht, dies zu ändern, indem ich meine Verzeichnisse auf os.environ ['PATH'] vorbereitet, aber nein. Es gibt anscheinend kein "DLLPATH", wie ich dachte, es wäre.

OK, das ist Fortschritt, denke ich. Jemand hat noch etwas? Vielen Dank.

4 Solutions collect form web for “LD_LIBRARY_PATH-Präzision und Schwierigkeiten beim Kompilieren”

Werfen Sie einen Blick auf eine Datei namens $ R_HOME / etc / ldpaths (wo in Ihrem Fall $ R_HOME scheint / usr / local / lib64 / R). Es sind die Befehle in dieser Datei, die LD_LIBRARY_PATH bei R's Start setzen.

Mine sieht so aus:

 flodel@netbook-samsung-N150:~$ cat /usr/lib/R/etc/ldpaths : ${JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre} : ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/i386/client:${JAVA_HOME}/lib/i386:/usr/lib/jni} if test -n ""; then : ${R_LD_LIBRARY_PATH=${R_HOME}/lib:} else : ${R_LD_LIBRARY_PATH=${R_HOME}/lib} fi if test -n "${R_JAVA_LD_LIBRARY_PATH}"; then R_LD_LIBRARY_PATH="${R_LD_LIBRARY_PATH}:${R_JAVA_LD_LIBRARY_PATH}" fi if test -z "${LD_LIBRARY_PATH}"; then LD_LIBRARY_PATH="${R_LD_LIBRARY_PATH}" else LD_LIBRARY_PATH="${R_LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}" fi export LD_LIBRARY_PATH 

Wenn Sie keinen Schreibzugriff auf die Datei haben, können Sie dies noch tun, bevor Sie R starten:

 export R_LD_LIBRARY_PATH=/your/custom/path 

Ich habe auf meiner Maschine getestet, dass es funktioniert, indem man folgendes läuft, nachdem R gestartet wurde:

 Sys.getenv("LD_LIBRARY_PATH") #[1] "/your/custom/path:/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client:/usr/lib/jvm/java-6-openjdk/jre/lib/i386:/usr/lib/jni" 

Wenn jemand das noch liest, habe ich in einigen "Personal-Engineering", um das Problem zu lösen, dh bekam die System-Admins, um R neu installieren, so dass es alles, was ich brauchte. War sicher nett von ihnen. Vielen Dank an alle, die Anregungen gaben. Ich würde gern etwas davon machen, aber ich muss mich mit diesem Projekt beschäftigen. Herzlichen Dank!

RPATH ist nur nützlich beim Kompilieren (gut, Verknüpfung); Es beeinflusst den Bibliotheks-Suchpfad, der in die Binärdatei gebacken wird.

Versuchen Sie, mit LD_DEBUG=libs zu LD_DEBUG=libs , in dem Bibliotheken von welchen Pfaden geladen werden. LD_LIBRARY_PATH es, von deinem LD_LIBRARY_PATH zu laden, aber es versäumt, oder nicht dort zu suchen (vielleicht rpy2 hat seinen eigenen Bibliothekspfad-Mechanismus?) Oder etwas anderes?

Versuchen Sie, Ihr Verzeichnis auf der linken Seite des LD_LIBRARY_PATH hinzuzufügen, da der Vorrang von links nach rechts geht.

 export LD_LIBRARY_PATH=~/your/custom/path:$LD_LIBRARY_PATH 
  • Wie kann ich pyspark RDDs mit R-Funktionen partitionieren
  • Rpy2, R und Ubuntu 12.04 - Ungültige substring -fopenmp
  • Rpy2-Fenster kann nicht aufgelöst werden
  • Ändern Sie r Objekt mit rpy2
  • Unterschied in Python statsmodels OLS und R's lm
  • Ausrichtung unterschiedlicher Nicht-Facetten-Plots in ggplot2 mit Rpy2 in Python
  • Fitdistr in rpy2
  • Erstellen Sie temporäre Dataframe mit rpy2: Speicher Problem
  • Kann rpy2 code parallel laufen?
  • Rpy2 auf Windows installieren 7
  • Installationsproblem: "python setup.py egg_info" fehlgeschlagen mit Fehlercode 1
  • Python ist die beste Programmiersprache der Welt.