我无法在Dreamhost的Passenger上获取rails应用程序,以查看〜/ opt / lib目录中的已编译库。我必须把它们放在这里,因为我没有root权限。
我可以在./script/console中启动我的应用程序,它看到它们库很好,因为我更新了我的.bash_profile的LD_LIBRARY_PATH
环境变量以包含〜/ opt / lib。
我已经尝试将ENV['LD_LIBRARY_PATH'] = '~/opt/lib'
放在我的environment.rb文件中,但它似乎没有太大帮助。当我导航到我的网站时,我从Passenger收到以下错误:
libodbcinst.so.1:无法打开共享对象文件:没有这样的文件或目录 - /home/username/opt/lib/odbc.so
任何人都有这方面的经验吗?
由于
答案 0 :(得分:2)
我在http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/
中描述了与Passenger类似的问题但是在你的情况下,这种迁移不起作用,因为你将无法更改Dreamhost的httpd.conf文件。
你可以尝试的另一件事是在.bashrc中设置LD_LIBRARY_PATH - 根据http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/这在Dreamhost的情况下有效。尚未验证Passenger在启动ruby之前是否会执行.bashrc。
答案 1 :(得分:1)
使用.bashrc
将不起作用,因为Passenger使用的库路径是Apache在引导时加载的路径。它无法查看用户的目录,因为这将是一个主要的安全问题。
答案 2 :(得分:0)
环境.rb方式听起来像是要走的路,但您可能想要追加到LD_LIBRARY_PATH
。此外,为了以防万一,我还要确保使用该目录的完整路径。
或者您可以使用.htaccess
指令,类似于@ http://wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI
答案 3 :(得分:0)
这是一个旧线程,但为了完整性,这是如何实现您的目标:
设置LDFLAGS环境变量,并在编译库文件之前设置链接和记录路径标志,以设置正确的搜索路径 - 例如:
export LDFLAGS =“ - L $ HOME / opt / lib -R $ HOME / opt / lib”
编译完成后,文件将具有设置到相关库的正确链接。您可以使用ldd命令行工具进行检查 - 例如:
ldd /$HOME/your/custom/complied/library/file.so