ユーザ権限でインストールを行なうと、~/.gem配下にインストールされる。
pure rubyのgemの場合には問題無くインストール出来るが、sqlite3-rubyをイ
ンストールする際に、2点程注意点があるので、その備忘録。
なにも考えず、以下のコマンドだとインストールエラーとなった。
gem install
結論から言うと、以下のコマンドでインストール出来た。
env RB_USER_INSTALL= gem install sqlite3-ruby -- \
--with-sqlite3-include=/usr/local/include \
--with-sqlite3-lib=/usr/local/lib
そもそも、sqlite3-rubyはpure rubyのコードでは無く、C言語のソースをコン
パイルしてOSネイティブのライブラリを作成して、インストールされている。
sqlite3-rubyについては、extconf.rbを実行することで、Makefileを作成して、
コンパイルを実施している。他のOSネイティブのライブラリを用意するgemも、
多くはextconf.rbを使用していると思われるので、同様の手順で実施可能であ
ろう。
ライブラリの指定
対象gem固有のextconf.rbオプションの設定について。
gem install sqlite3-ruby -- \
--with-sqlite3-include=/usr/local/include \
--with-sqlite3-lib=/usr/local/lib
gem installをそのまま指定した場合、sqliteのライブラリを見つけることが
出来なかった。~/.gem/ruby/1.8/gems/sqlite3-ruby-1.2.5/README.txtにやり
かたその物が記載されていたので、それを参考に実施。
gem installの引数に、「--」で区切って、extconf.rbに渡す引数を指定する
のがミソのようだ。
ユーザ権限でインストール
extconf.rbを用いてユーザ権限でインストールする方法について。
env RB_USER_INSTALL= gem install 。。。
FreeBSDのextconf.rbはデフォルトではインストール時に、インストールファ
イルをroot権限に変更しようとする。その為、ユーザ権限でインストールしよ
うとしても、ファイルをroot権限に変更出来ないのでエラーとなる。
環境変数 RB_USER_INSTALL を設定してあげれば、ユーザ権限でインストール
が可能になるので、コマンドラインでenvを用いて指定してあげる。