Frage

Ich habe Probleme bekommen Passagier eine Rails-Anwendung auf Dreamhost der kompilierten Bibliotheken zu sehen in meinem ~ / opt / lib. Ich habe sie hier setzen, weil ich keinen Root-Zugang haben.

Ich kann meine app in ./script/console booten und es sieht ihr Bibliotheken nur in Ordnung, weil ich meine Bash_profile der LD_LIBRARY_PATH Umgebungsvariable aktualisiert, um ~ / opt / lib.

Ich habe versucht Putting ENV['LD_LIBRARY_PATH'] = '~/opt/lib' in meiner environment.rb-Datei, aber es scheint nicht zu helfen. Ich erhalte die folgenden Fehler von Passagiere, wenn ich auf meiner Website navigieren: libodbcinst.so.1: kann nicht mit anderen geteilt öffnen Objektdatei: Keine solche Datei oder das Verzeichnis - /home/username/opt/lib/odbc.so

Jedermann hat Erfahrung mit dieser?

Danke

War es hilfreich?

Lösung

Die environment.rb Weise klingt wie die Art und Weise zu gehen, wenn Sie stattdessen LD_LIBRARY_PATH möchten anhängen. Ich würde auch für den Fall, stellen Sie sicher, zu diesem Verzeichnis den vollständigen Pfad zu verwenden.

Alternativ können Sie möglicherweise .htaccess Richtlinien, ähnlich zu verwenden, was @ http: / /wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI

Andere Tipps

Ich hatte ähnliches Problem mit Passagiere, die ich beschrieben in http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/

Aber in Ihrem Fall dieses migth nicht funktionieren, da Sie nicht in der Lage sein werden, Dreamhost httpd.conf Datei zu ändern.

Andere Sache, die Sie versuchen können, ist LD_LIBRARY_PATH in .bashrc gesetzt - nach http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/ dies in Dreamhost Fall gearbeitet. Noch nicht überprüft, dass Passagier Bashrc vor dem Start Rubin ausgeführt wird.

.bashrc Verwendung wird nicht funktionieren, da die Bibliothek Pfad, Passagier verwendet, ist derjenige beim Booten, die Apache Lasten. Es gibt keine Möglichkeit, es in einem Benutzerverzeichnis aussehen würde wie ein großes Sicherheitsproblem wäre.

Dies ist ein alter Thread, aber der Vollständigkeit halber ist dies, wie Sie Ihr Ziel erreicht haben:

  1. Stellen Sie den LD_LIBRARY_PATH wenn möglich - es horrend ist
  2. .
  3. Wie Sie haben keine Kontrolle über die Umgebung, dass die Apache Benutzerumgebung, versucht, eine LD_LIBRARY_PATH env var pro einstellen die oben genannten Methoden wird sowieso nicht funktionieren.
  4. Stellen Sie die LDFLAGS Umgebungsvariable mit Link und Aufnahmepfad Flags gesetzt, bevor die Bibliotheksdateien zu kompilieren, die richtigen Suchpfade einstellen - z.

    export LDFLAGS = "- L $ HOME / opt / lib -R $ HOME / opt / lib"

Sobald kompiliert, müssen die Dateien die richtigen Links zu den entsprechenden Bibliotheken gesetzt. Sie können prüfen, diese LDD-Kommandozeilen-Tool verwenden - z.

ldd /$HOME/your/custom/complied/library/file.so
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top