読者です 読者をやめる 読者になる 読者になる

彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Ruby を使っていて「no such file to load --zlib | readline | openssl」エラーに遭遇したときの対処

いま CentOS 5.7 及びソースからコンパイルした Ruby 1.9.2-p290 を使っています。

例えば Rails 3.2 を使うためには、Ruby をインストールする前に、下記の yum パッケージをインストールしておかなくてはいけません。

  • zlib(CentOS には最初から入っていました)
  • zlib-devel
  • readlineCentOS には最初から入っていました)
  • readline-devel
  • openssl(CentOS には最初から入っていました)
  • openssl-devel

では、上記パッケージをインストールする前に Ruby をインストールしてしまったらどうしたらよいか、という話です、今回。

Ruby を使っていて「no such file to load --zlib | readline | openssl」エラーに遭遇したときの対処方法

  1. エラーの発生
  2. 不足パッケージのインストール
  3. Ruby から zlib(等)を使えるようにする
  4. バージョン情報

1. エラーの発生

必要な yum パッケージをインストールせずに Rails を使っていると、例えば「rails console」を使うときや「bundle install」コマンドを使うときなどに、

no such file to load --zlib
no such file to load --readline
no such file to load --openssl

といったようなエラーが発生します。

以下「no such file to load --zlib」が発生したという想定で話を進めますが、readline のときも、openssl のときも同様の手順で解決できます。

2. 不足パッケージのインストール

「no such file to load --zlib」というエラーが出たら、zlib, zlib-devel パッケージをインストールします。

# yum install -y zlib zlib-devel

3. Ruby から zlib(等)を使えるようにする

さらに、zlib を Ruby から使えるようにするため、ひと手間加える必要があります。

# cd /usr/local/src (Ruby のソースをダウンロードしたディレクトリへ移動)
# cd ruby-1.9.2-p290/ext/zlib (readline なら、ext/readline ディレクトリへ移動)
# ruby extconf.rb

make, make install をまでしたら、追加したパッケージを使えるようになるはずです。

# cd /usr/local/src/ruby-1.9.2-p290
# make
# make install

4. バージョン情報

参考までに、僕の環境のバージョン情報を書いておきます。

CentOS 5.7
Ruby 1.9.2-p290
zlib.x86_64 1.2.3-4.el5
zlib-devel.x86_64 1.2.3-4.el5
readline.x86_64 5.1-3.el5
readline-devel.x86_64 5.1-3.el5
openssl.x86_64 0.9.8e-20.el5_7.1.0.1.centos
openssl-devel.x86_64 0.9.8e-20.el5_7.1.0.1.centos

以上です。よろしければ参考にしてください。