hachiNote

勉強したことをメモします。

Rails 3をインストールするその2(sqlite3)

目的

引き続き Web+DB Press vol.58の特集記事「詳細Rails 3」にしたがって作業を進めているのですが、記事ではRailsのデータベースとしてSQLite3を使用しているのでそれを使えるようにします。

環境はCentOS 5.3です。

とりあえずそれっぽいことを試みる

ここのサイトを見ていたら、SQLite3のインストールしてましたので、とりあえずまねっこ。Railsで使うのは、sqlite3-rubyって名前のものなのかな?
LinuxにRuby1.9.2とRails3をインストール - りっぷる開発記録

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

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for sqlite3_initialize()... no
sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!
*** 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=/usr/local/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-sqlite3lib
        --without-sqlite3lib


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.2 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.2/ext/sqlite3/gem_make.out

うん、失敗してますね。
sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!
だそうです。
もっと新しいバージョンのsqlite3が必要か、もしくはもともと入ってないのか(後から考えれば、それをちゃんと確かめておくべきだった)。

Web+DB PRESSの記事では特にsqlite3のインストールには言及していないので、もしかしたら別に入れなくても動いたりするのかな? ためしに作業を続けてみる。

$ rails g scaffold post title:string body:text
Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources listed in your Gemfile.
Try running `bundle install`.

やっぱりだめっぽいです。入れなきゃいけないな。

SQLite3をインストールする

公式サイトを探してみました。
SQLite Home Page

なんかいろんなファイルがあってどれだかわかりにくいのですが、適当に見繕ってえいやで入れちゃいます。

ここでも覚えたばかりのcheckinstallを使います(こちら参照id:hachiilcane:20110101)。ダウンロードファイルの名前がちょっとわかりづらいので、checkinstall実行後の設定画面で、バージョン名とかパッケージ名とか適当につけました。

# wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz
# tar xzvf sqlite-autoconf-3070400.tar.gz
# cd sqlite-autoconf-3070400
# ./configure
# /usr/local/sbin/checkinstall

# rpm -ivh /usr/src/redhat/RPMS/i386/sqlite-3.7.4-1.i386.rpm
準備中...                ########################################### [100%]
   1:sqlite                 ########################################### [100%]

入ったみたいです。ではもう一回sqlite3-rubyをgemでインストールしてみましょう。

# gem install sqlite3-ruby
Building native extensions.  This could take a while...
Successfully installed sqlite3-ruby-1.3.2
1 gem installed
Installing ri documentation for sqlite3-ruby-1.3.2...
Installing RDoc documentation for sqlite3-ruby-1.3.2...

おおっ、成功したみたいですよ! これでRailsアプリの作成を続けられますね!

2011/04/04追記 sqlite3-ruby? sqlite3?

達人出版会さんの「はじめる!Rails3(1)」を購入して勉強し始めたのですが(はじめる! Rails3(1) - 達人出版会)、そこではこんな風に書いてありました。

> sudo gem install sqlite3

うーん? インストールすべきものの名前は、sqlite3-ruby なのか sqlite3 なのか、どっちなんだろう?

たまたまPCの入れ替えをしたので、もう一度一連のRailsインストールを手順を試すときがきました。今回は試しに、sqlite3 という名前でgemインストールし、そのあとsqlite3-rubyという名前でもgemインストールするということをわざとやってみました。すると……。

# gem install sqlite3
Building native extensions.  This could take a while...
Successfully installed sqlite3-1.3.3
1 gem installed
Installing ri documentation for sqlite3-1.3.3...
Installing RDoc documentation for sqlite3-1.3.3...
# gem install sqlite3-ruby

#######################################################

Hello! The sqlite3-ruby gem has changed it's name to just sqlite3.  Rather than
installing `sqlite3-ruby`, you should install `sqlite3`.  Please update your
dependencies accordingly.

Thanks from the Ruby sqlite3 team!

<3 <3 <3 <3

#######################################################

Successfully installed sqlite3-ruby-1.3.3
1 gem installed
Installing ri documentation for sqlite3-ruby-1.3.3...
Installing RDoc documentation for sqlite3-ruby-1.3.3...

The sqlite3-ruby gem has changed it's name to just sqlite3. だそうです。ということで、"sqlit3"という名前でインストールするのが正しいみたいですね。

ついでいうと、「はじめる!Rails3(1)」ではgemインストールの前に、CentOS5の場合は以下の手順をと書かれているのだが、

> sudo yum install sqlite3-devel

これってまちがってますよね? CentOS5だと sqlite3-devel という名前のパッケージはないです。sqlite-devel はありますけどね。でもCentOS5.5では sqlite-devel-3.3.6-5 なので、どっちにしろバージョンが足りないんじゃないかな。