rake db:migrate してエラーが出た時の対処法

大学の課題でRuby on Railsを使うんだけど、その途中でデータベースをマイグレートする時にエラーが出た。

takeshi@takeshi-laptop:~/rails/application$ rake db:migrate
(in /home/takeshi/rails/application)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql

(See full trace by running task with --trace)

なんかgem install mysqlってしたらいいらしい。

takeshi@takeshi-laptop:~/rails/application$ gem install mysql
WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and
/var/lib/gems/1.8/bin aren't both writable.
WARNING: You don't have /home/takeshi/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
extconf.rb:10:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:10


Gem files will remain installed in /home/takeshi/.gem/ruby/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /home/takeshi/.gem/ruby/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

またエラーが。。。
1つ目の警告は多分管理者権限がいるから。
2つ目の警告の通りパスを追加しておく。
~/.bashrc に

export PATH=${PATH}:/home/takeshi/.gem/ruby/1.8/bin

を追加。
で、重要なのはエラーなんだけどよく分かんないからぐぐってみたらhttp://ameblo.jp/speedway1980/entry-10479643965.htmlを見つけたので、書いてあるとおりに試してみる。
ちなみに、ここらへんから順番とか曖昧。

takeshi@takeshi-laptop:~/rails/application$ sudo apt-get install rubygems
[sudo] password for takeshi:
E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
takeshi@takeshi-laptop:~/rails/application$ sudo apt-get install rubygems
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
ttf-mscorefonts-installer cabextract ttf-symbol-replacement libmpg123-0
winbind
これらを削除するには 'apt-get autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
rubygems
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
2,684B のアーカイブを取得する必要があります。
この操作後に追加で 98.3kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/universe rubygems 1.3.5-1ubuntu2 [2,684B]
2,684B を 0s で取得しました (7,363B/s)
未選択パッケージ rubygems を選択しています。
(データベースを読み込んでいます ... 現在 207001 個のファイルとディレクトリがインストールされています。)
(.../rubygems_1.3.5-1ubuntu2_all.deb から) rubygems を展開しています...
rubygems (1.3.5-1ubuntu2) を設定しています ...

takeshi@takeshi-laptop:~/rails/application$ sudo apt-get install ruby-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
ttf-mscorefonts-installer cabextract ttf-symbol-replacement libmpg123-0
winbind
これらを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
ruby1.8-dev
以下のパッケージが新たにインストールされます:
ruby-dev ruby1.8-dev
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
582kB のアーカイブを取得する必要があります。
この操作後に追加で 1,667kB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main ruby1.8-dev 1.8.7.249-2 [577kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main ruby-dev 4.2 [5,114B]
582kB を 1s で取得しました (414kB/s)
未選択パッケージ ruby1.8-dev を選択しています。
(データベースを読み込んでいます ... 現在 207006 個のファイルとディレクトリがインストールされています。)
(.../ruby1.8-dev_1.8.7.249-2_i386.deb から) ruby1.8-dev を展開しています...
未選択パッケージ ruby-dev を選択しています。
(.../archives/ruby-dev_4.2_all.deb から) ruby-dev を展開しています...
ruby1.8-dev (1.8.7.249-2) を設定しています ...
ruby-dev (4.2) を設定しています ...

で、もっかいgem install mysqlやってみる。

takeshi@takeshi-laptop:~/rails/application$ sudo gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... 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=/usr/bin/ruby1.8
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--without-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mlib
--without-mlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-zlib
--without-zlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-socketlib
--without-socketlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-nsllib
--without-nsllib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mygcclib
--without-mygcclib
--with-mysqlclientlib
--without-mysqlclientlib


Gem files will remain installed in /var/lib/gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

エラーが残ってる。
さらにぐぐったらhttp://d.hatena.ne.jp/kaorumori/20090308/1236590610こことか見つけたので書いてあるとおりにやってみる。

takeshi@takeshi-laptop:~/rails/application$ sudo apt-get install libmysqlclient-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
ttf-mscorefonts-installer cabextract ttf-symbol-replacement libmpg123-0
winbind
これらを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
zlib1g-dev
以下のパッケージが新たにインストールされます:
libmysqlclient-dev zlib1g-dev
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
3,282kB のアーカイブを取得する必要があります。
この操作後に追加で 8,659kB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main zlib1g-dev 1:1.2.3.3.dfsg-15ubuntu1 [162kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main libmysqlclient-dev 5.1.41-3ubuntu12.3 [3,120kB]
3,282kB を 14s で取得しました (221kB/s)
未選択パッケージ zlib1g-dev を選択しています。
(データベースを読み込んでいます ... 現在 207038 個のファイルとディレクトリがインストールされています。)
(.../zlib1g-dev_1%3a1.2.3.3.dfsg-15ubuntu1_i386.deb から) zlib1g-dev を展開しています...
未選択パッケージ libmysqlclient-dev を選択しています。
(.../libmysqlclient-dev_5.1.41-3ubuntu12.3_i386.deb から) libmysqlclient-dev を展開しています...
man-db のトリガを処理しています ...
zlib1g-dev (1:1.2.3.3.dfsg-15ubuntu1) を設定しています ...
libmysqlclient-dev (5.1.41-3ubuntu12.3) を設定しています ...

libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

で、もっかいgem install mysqlやってみる。

takeshi@takeshi-laptop:~/rails/application$ sudo gem install mysql
Building native extensions. This could take a while...
Successfully installed mysql-2.8.1
1 gem installed
Installing ri documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
Installing RDoc documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate

大量の警告っぽいものが出てるけど、一応うまくいったのか・・・?
で、目的のrake db:migrateしてみる。

takeshi@takeshi-laptop:~/rails/application$ rake db:migrate
(in /home/takeshi/rails/application)
== CreateMembers: migrating ==================================================

    • create_table(:members)

-> 0.2382s
== CreateMembers: migrated (0.2384s) =========================================

うまく行ったっぽい。