Rmpi ​​kann keine gemeinsam genutzten Bibliotheken als Benutzer ohne Rootberechtigung laden

8

Ich habe ein Problem mit Rmpi, in dem ich versuche, es zu laden, und ich bekomme diese Fehlermeldung:

%Vor%

Dieser Fehler tritt jedoch nicht auf, wenn ich als root angemeldet bin.

Es scheint sich nicht um ein Berechtigungsproblem zu handeln. Ich habe die Berechtigungen für libmpi.so.0 überprüft:

%Vor%

Und Rmpi.so:

%Vor%

Ich betreibe R trotzdem als sudo.

Relevante Systeminformationen: -Linux-Distribution: CentOS 5.5 -R Version: 2.11.1 (2010-05-31) -Rmpi-Version: 0,5-8 -MPI-Implementierung ist openmpi

%Vor%

Jede Hilfe wäre sehr willkommen!

    
Rworldproblems 01.10.2013, 16:06
quelle

1 Antwort

3

Das Problem hierbei ist, dass OpenMPI sein Bibliotheksverzeichnis standardmäßig nicht mit dem System-Linker registriert. Aus diesem Grund empfehlen einige Installationshandbücher, dass Sie ihre Verzeichnisse in die Variable LD_LIBRARY_PATH einfügen, damit die Bibliotheken zur Laufzeit gefunden werden können. "Das Hinzufügen der Verzeichnisse zu LD_LIBRARY_PATH" muss jedoch jedes Mal erfolgen, wenn eine neue Shell geladen wird. Daher wird in diesen Leitfäden vorgeschlagen, sie in ~/.bashrc oder ähnliches einzufügen, damit die Einstellung bei jeder Anmeldung wiederhergestellt wird.

Die ~/.bashrc -Datei (oder ~/.profile oder eine beliebige andere) ist jedoch eine benutzerspezifische Einstellung . Angenommen, man ist bei der Installation von openmpi und Rmpi ​​und ähnlichem als root angemeldet, was wahrscheinlich ist, bedeutet dies, dass das Hinzufügen dieser benutzerspezifischen Dateien die Bibliothekspfade nur als root und nicht als normaler Laufzeitbenutzer definiert .

Der Fix ist im Allgemeinen, dem Linker mitzuteilen, wo diese Dateien gefunden werden können. Auf meinem eigenen System, auf dem CentOS 7, OpenMPI 1.10.0 (unter Verwendung der Scientific Linux RPMs), R 3.2.3 und Rmpi ​​0.6-5 läuft, passiert das, wenn ich den Bibliothekspfad nicht einstellen kann:

%Vor%

Wenn ich den Linker-Pfad vorübergehend mit einer temporären Variable festlege, funktioniert es für diesen Aufruf:

%Vor%

Um diese Änderung dauerhaft zu machen, ist es jedoch am besten, das Verzeichnis openmpi libraries mit dem Systemlinker selbst zu registrieren, indem Sie eine neue Datei in /etc/ld.so.conf.d erstellen und ldconfig wie folgt ausführen:

%Vor%

Sobald Sie das getan haben, sollte Rmpi ​​für jeden Benutzer unabhängig von Umgebungsvariablen geladen werden können.

    
Danielle Church 06.02.2016 03:01
quelle

Tags und Links