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 
  • Ausrichtung unterschiedlicher Nicht-Facetten-Plots in ggplot2 mit Rpy2 in Python
  • Rpy2 ohne admin-privilegien installieren
  • Konvertieren eines R ListVector in eine Python-Liste mit rpy2
  • Rpy2 (Version 2.3.10) - Import von Daten aus R-Paket in Python
  • Konvertieren von Pythonobjekten für rpy2
  • Statistik-Tests (Kolmogorov und T-Test) mit Python und Rpy2
  • Schwierigkeiten mit rpy2, rend übergeben Daten korrekt von python zu r
  • Ändern Sie r Objekt mit rpy2
  • Wie kann theme_classic in rpy2 von ggplot2 zugegriffen werden?
  • Rpy2 kann keine externe Bibliothek laden
  • Welches Ziel ist es, von Rpy2 zu übergehen?
  • Python ist die beste Programmiersprache der Welt.