2011-09-09 5 views
4

、私は正常に杉でアプリをプッシュが、同じようにエラーが生じHeroku BambooからCedarスタックに移行中に、一部のネイティブライブラリがありません。それを修正するには?私は杉に竹のスタックから生産アプリを移行しています

LoadError: Could not open library 'lib.so': lib.so: cannot open shared object file: No such file or directory 
from /app/vendor/bundle/ruby/1.9.1/gems/ffi-1.0.9/lib/ffi/library.rb:75:in `block in ffi_lib' 
from /app/vendor/bundle/ruby/1.9.1/gems/ffi-1.0.9/lib/ffi/library.rb:54:in `map' 
from /app/vendor/bundle/ruby/1.9.1/gems/ffi-1.0.9/lib/ffi/library.rb:54:in `ffi_lib' 

0.1.3/libに/ tidy_ffi/interface.rb:5:で `」

竹のスタックにあったシダースタックにいくつかのネイティブライブラリがないようです。私の場合、そのlibtidy.so。

どうすればこの問題を解決できますか?

答えて

5

竹の積み重ねと杉の積み重ねは、それに含まれているものとはかなり異なっています。しかし、Linuxカーネルに根本的な& architechtureは、

(local)$ heroku run bash --app bamboo-app-name 
(remote)$ uname -a 
    Linux 2.6.32-316-ec2 #31-Ubuntu SMP Wed May 18 14:10:36 UTC 2011 x86_64 GNU/Linux 

(local)$ heroku run bash --app cedar-app-name 
(remote)$ uname -a 
    Linux 2.6.32-316-ec2 #31-Ubuntu SMP Wed May 18 14:10:36 UTC 2011 x86_64 GNU/Linux 

は、あなたのアプリが存在すると、共有オブジェクトファイルlibtidy.soを必要tidy_ffi宝石を使用して言うことができますファイルをコピーするのは安全でなければなりませんので、同じです/ usr/libにあります。杉で

、TidyFFIのような任意のコール:: Tidy.new(「こんにちは」)は、あなたがすることができます(竹からlibtidy.soのコピーを入手することができ、それを修正するには

LoadError: Could not open library 'lib.so': lib.so: cannot open shared object file: No such file or directory 

として失敗します。使用そのための任意のリモートボックスにSCP)とあなたのレポでそれをコミット(ネイティブ/ libにRAILS_ROOT /にあってもよい)と

ENV['LD_LIBRARY_PATH'] ||="/usr/lib" 
ENV['LD_LIBRARY_PATH'] +=":/app/lib/native" 

をenvironment.rbにするために、次の行を追加します。これは/ tidy_ffi宝石はLIBに見えるようになります共有ライブラリのネイティブ これらの変更をCedarアプリにプッシュすると、すべて正常に動作するはずです。

関連する問題