2008-10-30 70 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 
相關問題