2017年4月30日日曜日

ubuntuでnokogiriをgemでインストール

「Ubuntu 16.04.2 LTS」にはlibzがシステムインストール(※1)されている。 なのに、gemでnokogiriをinstallしようとしたら、libzがないといわれてしまう。
システムのlibzを使いたいとおもい色々ググった結果(※2)、以下でOKみたい。 「--」で「extconf.rb」にオプションを渡せるようだ。

% gem update nokogiri -- --use-system-libraries

しかし、これだけではpkg-configで「libxml-2」、「libxslt」、「libexslt」が見つからないといったエラーが出てしまっているので、libxml2-dev、libxslt1-devをパッケージでインストール。pkg-config用の「.pc」ファイルが作成された(※3)。これでinstalを進めたらうまくインストールできた。

bundle対応

bundleでインストールする際にオプションをつけたい場合には、bundle configコマンド(※4)で対応。
% bundle config build.nokogiri --use-system-libraries
このコマンドを実行すると「~/.bundle/config」に設定が書き込まれるようだ。
(※1) /lib/x86_64-linux-gnu/libz.so.1
(※2) http://www.nokogiri.org/tutorials/installing_nokogiri.html
(※3) /usr/lib/x86_64-linux-gnu/pkgconfig/{libxml-2.0,libxslt,libexslt}.pc
(※4) http://ruby.studio-kingdom.com/bundler/bundle_config/#build_options