MacBookでsqlite3-rubyをアップデートする時の悩み

目的

  • MacBook OSX 10.5.3 Leopard環境で、
  • sqlite3-rubyを1.2.1から1.2.2へアップデートしたい!

結論

散々悩んだ挙げ句、以下のコマンドでアップデートできた。(アーキテクチャフラグというのをマシンに合わせて適切に設定する必要があったのだ。)

$ sudo env ARCHFLAGS="-arch i386" gem install sqlite3-ruby
  • ちなみに、PowerPCmacなら...(こちらは自分で試していない)
$ sudo env ARCHFLAGS="-arch ppc" gem install sqlite3-ruby

MacOSX 10.5 Leopardには、Rubyも、Railsも、sqlite3も、sqlite3-rubyも最初から全部入っていることの便利さを改めて感じた。何も苦労しないで始めたツケが、今になって回ってきたという感じ。

参考ページ

こうゆうことが、サクッと分かる人になりたいものだ。(Robertoさんは素晴らしい!深く深ーく感謝。)

果てしない経過...

Railsを2.1.0にアップデートしたついでに、この際、その他のgemソフトウェアもアップデートしてしまえ、と思い立ち、やってみた。(そもそも現状で問題なく利用できているのだから、無理してアップデートする必要はなかったのに。)

$ sudo gem update

しかし、何故かsqlite3-rubyのインストールで止まる...。何らかのエラーが発生しているようだが...

$ sudo gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
	ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install sqlite3-ruby
checking for fdatasync() in -lrt... no
checking for sqlite3.h... yes
checking for sqlite3_open() in -lsqlite3... no
 *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
	--with-sqlite3-dir
	--without-sqlite3-dir
	--with-sqlite3-include
	--without-sqlite3-include=${sqlite3-dir}/include
	--with-sqlite3-lib
	--without-sqlite3-lib=${sqlite3-dir}/lib
	--with-rtlib
	--without-rtlib
	--with-sqlite3lib
	--without-sqlite3lib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/gem_make.out

自分なりに読んでみるが...

>> /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/extconf.rbで問題が発生している?

  • Could not create Makefile due to some reason, probably lack of
  • necessary libraries and/or headers. Check the mkmf.log file for more
  • details. You may need configuration options.

>> 何らかの理由でMakefileを作成できない?
>> たぶん、必須ライブラリとヘッダーが不足している?
>> 詳細はmkmf.logをチェック?
>> configurationオプションが必要かもしれない?(以下、ずらっとオプション例の表示が続き...)

  • Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2 for inspection.
  • Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/gem_make.out

>> gemファイルは確認用に/Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2に残される?
>> /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/gem_make.outにログは記録される?


ちゃんとした理由はよく分からない...。
web検索してみるが、肝心な情報を見落として、周辺の情報に惑わされた。(自分の場合は環境も原因も違っていたのに...。)

  • sqlite3-develをインストールしたら出来た。
  • swigが足りない。

それらをインストールしようとするが、更なる疑問が...。

  • apt-getって何だ?*1
  • MacPort?*2

調べて、インストールして、コマンドの使い方覚えて、その後、不足しているライブラリまたはヘッダをインストールしたつもりになった。(実は最初からインストールされていたので不要だったのに...。)そして再チャレンジ。

$ sudo gem install sqlite3-ruby

なのに、エラーの状況は変わらず、ガーン...。
現状のsqlite3-ruby 1.2.1のままでも問題なく使えているので、ここで諦めることも考えた。しかし、ここまでやって諦めてしまうのは原因も分からず気分も晴れない。
もやもやした気分のまま、その後2、3日保留にして、久々にweb検索して、日本語のページも、英語のページも注意深く熟読してみると、この日記冒頭の素晴らしいページの存在に気付いたのでした。(どうも最初は見落としていたらしい...。それでこんなに遠回りすることに。)

$ gem list sqlite3

 *** LOCAL GEMS ***

sqlite3-ruby (1.2.2, 1.2.1)

無事、sqlite3-ruby 1.2.2にアップデートできている。とてもスッキリ!

  • それにしても、エラーが発生した時のメッセージは、あれで適切なのだろうか?
  • 遠回りしたけど、mac環境の2大パッケージ管理ツールのさわりを理解できた。それは収穫だった。

*1:ソフトウェアの複雑な依存関係を見極めて、手軽にインストールできるようにするパッケージ管理ツール。mac環境ではfinkをインストールすると利用できるようになるコマンド。finkの使い方を検索すると出てくる。

*2:finkと同じくパッケージ管理ツール。