2008-10-30 83 views
5

我在Dreamhost的Passenger上获取rails应用程序以查看我的〜/ opt/lib目录中的已编译库时遇到问题。我必须把它们放在这里,因为我没有root权限。在Passenger Rails应用程序中包含〜/ opt/lib库

我可以在./script/console中启动我的应用程序,它看到它们的库很好,因为我更新了我的.bash_profile的LD_LIBRARY_PATH环境变量以包含〜/ opt/lib。

我试过在我的environment.rb文件中放入ENV['LD_LIBRARY_PATH'] = '~/opt/lib',但它似乎没有太大的帮助。当我导航到我的网站时,我从Passenger得到以下错误: libodbcinst.so.1:无法打开共享对象文件:没有这样的文件或目录 - /home/username/opt/lib/odbc.so

任何人有这方面的经验吗?

感谢

回答

2

我与乘客类似的问题,我在http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/

但在你的情况描述为,你将不能够改变的Dreamhost的httpd.conf文件这migth不起作用。

你可以尝试的其他事情是在.bashrc中设置LD_LIBRARY_PATH - 根据http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/,这已经在Dreamhost的情况下工作。未启动红宝石之前,未验证Passenger会执行.bashrc。

1

使用.bashrc将不起作用,因为Passenger使用的库路径是Apache在启动时加载的路径。它不会查看用户的目录,因为这将是一个主要的安全问题。

0

这是一个古老的线程,但出于完整性,这是如何实现你的目标,你可能能够使用.htaccess指令,类似于:

  1. 不要如果可能,设置LD_LIBRARY_PATH - 这是可怕的。
  2. 由于您无法控制Apache 用户环境的环境,试图根据 设置LD_LIBRARY_PATH环境变量,所以上述方法无论如何都不起作用。
  3. 设置与之前编译库文件,设置正确的搜索路径设置链接,并记录路径标志的LDFLAGS环境变量 - 例如:

    出口LDFLAGS =“L - $ HOME /选择/ lib目录-R $ HOME/opt/lib“

编译完成后,这些文件将具有设置到相关库的正确链接。您可以使用ldd命令行工具进行检查 - 例如:

ldd /$HOME/your/custom/complied/library/file.so 
相关问题