1

Red Hat EL6 サーバー (本番用) があります。ソースから ruby​​ と ruby​​gems をインストールしました。

# uname -a
Linux servername 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
# ruby -v
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]

開発マシンからこの運用サーバーにデプロイできます。すべてがうまく機能します。私は翌日来て、旅客エラーページを取得します。エラーが何であったか忘れましたが、先週発生しました。しかし、コマンドを実行することさえできませんでしたruby -v

何が起こったのかを調査しようとしましたが、エラーの原因を見つけることができませんでした。そこで、Ruby と RubyGems (2.0.3) を再度コンパイルします。すべてが再びうまく機能します。月曜日に到着すると、乗客のエラー ページが表示されます。

/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `require': closed stream (IOError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `<module:Gem>'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:114:in `<top (required)>'
from <internal:gem_prelude>:1:in `require'
from <internal:gem_prelude>:1:in `<compiled>'

今回は などの ruby​​ コマンドを実行できますが、パッセンジャー ページで発生したのと同じエラーが発生するためruby -v実行できません。gem -v

そこで、rubygems.rb ファイルの 1070 行目に移動して、エラーを生成しているコード行を確認します。これは...

require "rubygems/specification"

rubygems フォルダーに移動すると、specification.rb ファイルがあります。

更新 わかりましたので、もう一度 ruby​​gems をインストールして実行しようとしましたがruby setup.rb、これが得られたものです...

# ruby setup.rb
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `require': closed stream (IOError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `<module:Gem>'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:114:in `<top (required)>'
from <internal:gem_prelude>:1:in `require'
from <internal:gem_prelude>:1:in `<compiled>'

サーバーで何が起こっているか知っている人はいますか? もう一度 ruby​​gems をコンパイルしてみます。おそらくエラーは修正されますが、明日は別のエラーが発生するのではないかと思います。

4

2 に答える 2

0

プレリンクが Rails アプリを台無しにしていた: http://www.tsheffler.com/blog/?p=491

Web 上の 2 つの記事では、Linux プレリンク オプティマイザが実際に Ruby バイナリを破損していたことが示唆されました。解決策は、Ruby バイナリのプレリンクを禁止するようにシステムに指示することです。提案どおりに「-b /usr/bin/ruby」行を /etc/prelink.conf ファイルに追加した後、問題は解決したようです。

より詳しい情報:

于 2013-06-24T18:21:57.103 に答える
0

少し遠いショットですが、ディスクがいっぱいではありませんよね?

于 2013-06-17T17:59:47.287 に答える