Edited at

bundle installでつまずきやすいgem達

More than 3 years have passed since last update.

bundle installでコケるとなんとも言えないガッカリ感があるので、何度も同じ過ちを繰り返さないためのメモ。

失敗が多いgemとして、以下の5つを紹介します。 細かいバージョンなど正確でない部分は後で修正します。


  • pg(mysql2)

  • libv8

  • therubyracer

  • sass/listen?

  • rmagick

  • nokogiri

なお、SSL証明書関係でエラーが出る場合の対処は、本記事では紹介しないので、他の記事を参照するとよいと思います。


pg

仕事で使うRDBMSがPostgreSQLなため、Railsアプリを開発する際は大体pgを入れている。


準備ができてないと「No pg_config」エラーが起きる。ここではPostgreSQLだが、MySQL(mysql2)の場合も同じようなエラーと対処になるかもしれない。


対処

PostgreSQL9.2をインストールする。CentOSの場合、この辺(↓)がインストールされていればOK。


  • postgresql92-libs

  • postgresql92

  • postgresql92-devel

  • postgresql92-server

なお、素のCentOSではPostgreSQL8系のパッケージしかインストールされないので、事前に9.2用のrpmファイルをインストールしておく必要がある(PostgreSQLのリポジトリRPMサイトから必要なものを探して、# rpm -Uvh http://xx.xx.xx.xx/yyy.rpm)。

後は、pg_configの置かれたパスをつけてインストールすればOK(下記は例)

$ gem install pg -- --with-pg-config=/usr/pgsql-9.2/bin

上記でうまくいかない場合は、with-pg-dirオプションを試してみる。

$ gem install pg -- --with-pg-dir=/usr/pgsql-9.2

また、これらと別の方法として、個別インストールではなく、bundle installでまとめてインストールされるようにしたければ、環境変数PATHに加えておけばよい。

$ export PATH=/usr/pgsql-9.2/bin:$PATH

$ bundle install


libv8

x86(32bit)とx64(64bit)でgemが異なる。


  • 32bit: libv8-3.11.8.17-x86-linux.gem

  • 64bit: libv8-3.11.8.17-x86_64-linux.gem


なぜ起きたか

gemがプラットフォームで異なるだけなら、普通にbundle installする分にはあまり問題にはならない。

今回、何故ハマったかというと、


  1. 32bitOSでbundle package(依存するgemをvendor/cacheに集める)を実行し、Railsアプリをパッケージ化

  2. 1. で作ったパッケージを64bitOSに転送し、bundle install --localしてインストール

みたいなことをしたから。


対処

32bit用と64bit用のgemを両方vendor/cacheに置くように、パッケージ手順を修正。


therubyracer

このgemは結構色んな人がハマっている模様。


対処

自分の場合は、g++が必要なのにインストールされていないのが原因であり、パッケージをインストールしたら解消できた。

# yum -y install gcc-c++


sass/listen?

Rails4でnewしたアプリだと、自動生成したGemfileにsass-rails(4.0.0)への依存が書かれている。このsass-railsの依存先であるsass(3.3.0)でエラーになることがあった。

エラーの内容はlistenというgemがインストールされていないというもの。


対処

詳しい原因は不明。

事前に gem i listen -v 2.7.0 を実行し、listenを個別インストールして解消した。


rmagick

最後にrmagick。あまり使うことはないかもしれないが、仕事で非常によく使っているRedmineがこのgemを利用しているため、私はよくハマっている。。


対処

ImageMagickを事前にインストール(バージョンの相性もあるみたいなので、古過ぎないように注意)

# wget http://xx.xx.xx.xx/ImageMagick-6.8.8-8.tar.gz

# tar zxvf ImageMagick-6.8.8-8.tar.gz
# cd ImageMagick-6.8.8-8
# ./configure
# make
# make install

次に、MagickCore.pcのあるパスをPKG_CONFIG_PATH環境変数に設定する。

# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

この設定なしでインストールしようとすると、

Perhaps you should add the directory containing 'MagickCore.pc' to the PKG_CONFIG_PATH environment variable

というそのまんまのエラーメッセージが表示されるので、分かるはず。

これで、個別にrmagickをインストールできる。

# gem install rmagick


nokogiri


対処

以下の通り、あらかじめパッケージをインストールする。

# yum -y install libxslt-devel libxml2-devel