Ruby
CentOS

CentOS で Ruby が動かないときは prelink が怪しい

More than 5 years have passed since last update.

CentOS で chef solo を設定中のこと。

昨日は使えたはずのコマンドが一部使えなくなっている。

$ knife solo init test

/usr/bin/ruby: No such file or directory -- $(prefix)/com (LoadError)

 

CentOS + Ruby で同様の問題が。


・インストールしたての頃は問題なく動作するが、半日から1日経って起動すると発現するようになる。

・インストールしなおせば解消される (リビルドも不要)。が、また半日か経つと発現する。


Ruby バグ?

CentOSでrubyが実行出来なくなる現象を解決(未解決)

 

先輩に相談したところ、定期的に問題が発生→ cron が怪しいのでは、とのこと。

cron で prelink というものが定期的に実行されていました。

prelink を解除するコマンドを実行すると、コマンドが正常に動くようになりました。

prelink -u /usr/bin/ruby

 

*** 参考

prelinkは動的リンクの書き換えを事前に行うもののようです。

rpmで入れたバイナリのchecksumが一致しないと思ったらprelinkのせいだった

 

ruby でバイナリが壊れるトラブルもよくあるそう。

ruby を prelink しないようにする方法も載っていました。

【Ruby】prelinkなるものがrubyのバイナリを破壊するそうです