Question

Je ne parviens pas à obtenir une application rails sur Dreamhost's Passenger pour voir les bibliothèques compilées dans mon répertoire ~ / opt / lib. Je dois les mettre ici parce que je n'ai pas d'accès root.

Je peux démarrer mon application dans ./script/console et elle voit très bien les bibliothèques car j'ai mis à jour la variable d'environnement LD_LIBRARY_PATH de mon fichier .bash_profile afin d'inclure ~ / opt / lib.

J'ai essayé d'insérer ENV ['LD_LIBRARY_PATH'] = '~ / opt / lib' dans mon fichier environment.rb mais cela ne semble pas trop aider. Le passager reçoit l'erreur suivante lorsque je navigue sur mon site: libodbcinst.so.1: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type - /home/username/opt/lib/odbc.so

Quelqu'un a-t-il de l'expérience avec cela?

Merci

Était-ce utile?

La solution

La méthode environment.rb semble être la voie à suivre, bien que vous souhaitiez peut-être ajouter à LD_LIBRARY_PATH . De plus, je veillerais à utiliser le chemin complet de ce répertoire au cas où.

Vous pouvez également utiliser des directives .htaccess similaires à ce qui est décrit @ http://wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI

Autres conseils

J'ai eu un problème similaire avec Passenger que j'ai décrit dans http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/

Mais dans votre cas, cela ne fonctionne pas car vous ne pourrez pas modifier le fichier httpd.conf de Dreamhost.

Vous pouvez également essayer de définir LD_LIBRARY_PATH dans .bashrc - en fonction de http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/ Cela a fonctionné dans le cas de Dreamhost. Nous n'avons pas vérifié que Passenger exécutera .bashrc avant de lancer ruby.

L'utilisation de .bashrc ne fonctionnera pas, car le chemin d'accès à la bibliothèque utilisé par Passenger est celui chargé par Apache au démarrage. Il n’ya aucun moyen de regarder le répertoire d’un utilisateur, ce serait un problème de sécurité majeur.

Ceci est un vieux fil, mais pour être complet, voici comment atteindre votre objectif:

  1. Ne définissez pas si possible LD_LIBRARY_PATH - c'est horrible.
  2. Comme vous n'avez pas le contrôle sur l'environnement qu'Apache l’environnement de l’utilisateur, en essayant de définir une variable d'environnement LD_LIBRARY_PATH les méthodes ci-dessus ne fonctionneront pas de toute façon.
  3. Définissez la variable d’environnement LDFLAGS avec les indicateurs de lien et de chemin d’enregistrement définis avant la compilation des fichiers de bibliothèque pour définir les chemins de recherche corrects, par exemple:

    .

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

Une fois compilés, les fichiers auront les liens appropriés vers les bibliothèques appropriées. Vous pouvez le vérifier à l'aide de l'outil de ligne de commande ldd, par exemple:

.
ldd /$HOME/your/custom/complied/library/file.so
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top