So exportieren Sie LD_LIBRARY_PATH an alle Benutzer und Systemdienste

12

Ich möchte in LD_LIBRARY_PATHSystemdienste und alle Benutzer exportieren . Systemdienste werden vor der Anmeldung ausgeführt und sind daher .bashrcnicht anwendbar.

Wie kann man das erreichen?

linquize
quelle
1
Könnten Sie näher auf das eigentliche Problem eingehen, das Sie lösen möchten?
Keith

Antworten:

20

Das musst du nicht. Fügen Sie das Verzeichnis zu /etc/ld.so.confoder eine neue Datei hinzu /etc/ld.so.conf.d/, je nach Distribution.

Danach müssen Sie (zumindest auf RedHat) ldconfigals root ausführen .

Als Vorsichtsmaßnahme sollten Sie darauf achten, welche Bibliotheken Sie dem Pfad der gemeinsam genutzten Systembibliothek hinzufügen (über die Umgebung, ld.so.conf oder in / usr / local / lib). Achten Sie insbesondere auf zwei verschiedene Versionen derselben Bibliothek mit demselben Sonamen. Wenn Sie beispielsweise eine libfoo.0.1 (Soname libfoo.0) über dpkg / rpm / etc installiert haben, möchten Sie keine libfoo.0.2 (auch Soname libfoo.0) in Ihrem benutzerdefinierten Bibliotheksverzeichnis haben.

(Eigentlich ist es nicht so einfach, eine systemweite Umgebungsvariable abzurufen. Sie können die meisten Benutzeranmeldungen /etc/environmentmit abrufen. Skripte hängen von Ihrem Init-System ab, aber (zum Beispiel) mit sysv init auf Debian können Sie sie einfügen /etc/default/rcS. Alles Mögliche Ich glaube nicht, dass du das kannst.)

derobert
quelle
@bahamat Ich vermute, aufgrund einer Überlappung beim Bearbeiten haben Sie einen Absatz aus meiner Antwort entfernt. Ich werde es wieder hinzufügen ..
Derobert
Nein, ich habe es gerade entfernt, weil "Sie müssen nicht" es bereits zusammenfasst und es viel prägnanter ist.
Bahamat
@bahamat Überprüfen Sie das Bearbeitungsprotokoll, unix.stackexchange.com/posts/46620/revisions ... Ich denke, es ist passiert, dass wir beide auf den Bearbeitungslink geklickt haben , dann habe ich meine Änderung eingereicht (der zusätzliche Absatz), und dann haben Sie Ihre Änderung eingereicht (was natürlich den zusätzlichen Absatz nicht beinhaltete). Scheint, als ob StackExchange dies erkennen und laut warnen sollte, aber anscheinend nicht ...
derobert
Nein, ich habe diesen Absatz nur ausdrücklich gestrichen, weil ich ihn für unnötig hielt. Ich habe keine weiteren Änderungen vorgenommen. Unsere Bearbeitungen waren 6 m voneinander entfernt und die, die nach mir kam, war 12 m später. Es war keine Kollision.
Bahamat
@ Bahamat Ah, das Hinterlassen eines Kommentars zur Bearbeitung hätte die Verwirrung beseitigt ...
Derobert
3

Sie können jeden Pfad in der Datei hinzufügen und /etc/ld.so.conf.ddann ausführen:

ldconfig -v 

Dann laden Sie sie.

Persischer Golf
quelle