記事のページ

Mac OS X 10.6 と DBD::MySQL

| コメント(2)
XCODE.jpg
  DBI モジュールと DBD モジュールは、データーベースを CGI から操作するのに必須のモジュールである。Mac OS X 10.6 の場合、DBI はもとから 1.607 がインストールされているが、DBD::MySQL はインストールされていない。Mac OS X 10.5 の際にも頭痛の種であったが、 Mac OS X 10.6 の場合はもっと話はややこしい。前回のなが〜い記事のなかから、"DBD::MySQL"に関する部分だけを抜き出して、まとめておくことにしよう。
 なにはなくとも、 "Xcode"だけは、インストールしておくこと。
MySQL_Inst1.jpg
【 MySQL 】
"DBD::MySQL" のインストールには "MySQL" のいくつかのライブラリとファイルが必要なのだが、動作に必要な最低限の形の "MySQL" がインストールされている場合、例えば Mac OS X 10.6 Server や "MAMP" 等では、不足するファイルをあらかじめ準備しておかないと "DBD::MySQL" のインストールでコケる、ということになる。
  Mac OS X 10.6 (server) では Apple Open Source によれば、現時点で 5.0.92 が使われており、MAMP 1.9 では 5.1.44 が使われている。開発環境としては主として "MAMP" を使うつもりであるため、 "DBD::MySQL" のことを考えて Mac OS X 10.6 本体にも 5.1.44 あたりを準備しておきたいところである。 Mac OS X 10.6 本体に 5.1.44 あたりをインストールしても問題なく使えるので、汎用性と開発環境としての安定性を充分考慮した結果、(風ブログバージョン)では、5.1.4X を使うことにする
MySQL_Inst2.jpg
 ここでひとつ重要な問題がある。 Mac OS X 10.6 は、32bit バージョンでも、64bit バージョンでもあまり意識することなく使うことができる。そういう意味では "MySQL" のみについて言えば、実際のところどちらのバージョンをインストールしても動作に問題はない。
 ところが、"DBD::MySQL" のインストールの際に、大きな問題が出てくる。"MySQL" の方で、 64bit の Mac に 32bit バージョンをフルインストールすることを想定していないファイル構造になっているのか、64bit 動作の "DBD::MySQL" の方で 32bit バージョンの "MySQL" を想定していないのか、まだはっきりとはわからないのだが、 Mac OS X 10.6 においては、"MySQL" は必ず 64bit バージョンをインストールすることが最重要である。32bit CPU の Mac ( intel core solo ) で開発環境を構築する場合には Mac OS X 10.5 のままにしておくこと。
  MySQL Archives の Mac OS X のダウンロードから、 5.1.4X をさがして、ダウンロードしてこよう。 そして、 上の2つの画像を参考にしてインストールしておく。

DBD-MySQL1.jpg
【 DBI および DBD::MySQL 】
   Mac OS X 10.6 に MySQL をパッケージからインストールした場合には、フルバージョンの MySQL がインストールされるために、 DBD::MySQL をインストールするために必要な "MySQL のいくつかのライブラリとファイル" が既にちゃんと入っている。
 いろいろなやり方があるようだが、どこかに適当なディレクトリを作り、あらかじめ必要な MySQL のライブラリをコピーしてもってきておくことにしよう。
 ターミナルから、
sudo mkdir /tmp/mysql-lib
cd /usr/local/mysql/lib
sudo cp *.a /tmp/mysql-lib
として、/tmp に、"mysql-lib" というフォルダ(ディレクトリ)を作り、必要なモノをあらかじめもってきておく。
DBD_MySQL2.jpg
 さて、DBD::MySQL をインストールしていこう。あらかじめ注意しておかなければいけないことは、MySQL を起動しておくことだ。DBD::MySQL モジュールをダウンロードして、デスクトップに解凍する。今回のバージョンは DBD-mysql-4.014 であるが、おそらくこれ以上のバージョンでもほとんど大丈夫なはずである。上の図のように、ターミナルから、
cd Desktop/DBD-mysql-4.014
として、 "MySQL" の root ユーザーにはパスワードを設定していないはずなので、以下、改行せずに一行で
perl Makefile.PL --libs="-L/tmp/mysql-lib -lmysqlclient" --mysql_config=/usr/local/mysql/bin/mysql_config --testhost=localhost -testuser=root
と入力する。ここでターミナルの画面をそのままにしておき、"DBD-mysql-4.014" フォルダの中にできあがった設計図である "makefile" をご自身がお使いのテキストエディタで開いて、少しいじってやることにする。図の 44行目、45行目、
LDDLFLAGS = -arch x86_64 -arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib
LDFLAGS = -arch x86_64 -arch i386 -arch ppc -L/usr/local/lib
の部分から、" -arch i386 -arch ppc" の語句を削除して、
LDDLFLAGS = -arch x86_64 -bundle -undefined dynamic_lookup -L/usr/local/lib
LDFLAGS = -arch x86_64 -L/usr/local/lib
に、同じように 314行目付近、
CCFLAGS = -arch x86_64 -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include
の部分から、" -arch i386 -arch ppc" の語句を削除して、
CCFLAGS = -arch x86_64 -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include
として、保存しよう。これで、64bit のみに合わせた形に整形 (make) される。ターミナルに戻って、
make
make test
エラーがでなければ、
sudo make install
これで、インストールできるはずである。

 さて、なんだ〜?とお思いの読者のために補足しておく。じつは、Mac OS X 10.6.3 か、10.6.5 ぐらいまでなら、 "makefile" をいじることなく、いきなり
make
make test
sudo make install
としてもエラーも出ずに、インストールできるはずである。
 ところが、Mac OS X 10.6.7 あたりまでアップデートされると、エラーがでて "make" できないのである。著者も多忙な中、エラーの関連ファイルをいろいろ調べてみた結果、どうも iPad 等に採用された iOS との兼ね合いなのか詳細は不明だが、32bit 関連のファイル構造がだいぶ変更されたようである。したがって面倒くさいので、 "makefile" は、"-arch x86_64" のみに変更して "make" するようにしたのである。

 本当は、Mac OS X 10.6.3 あたりで、"DBD::MySQL" をとにかくインストールしてしまって、それから Mac OS X のアップデートをかければ、一番すっきりしている。現に著者はしばらくの間、この問題に気がつかずにいたほどである。
 本当にアップルのアップデートといったら。。。。やれやれ。

MT4_Setting.jpg
【 MAMP と DBD::MySQL】
 さて、詳しくは前回の記事を参照していただきたい。 "MovableType" の開発環境として "MAMP" から、"DBD::MySQL" を使うためには、めんどうだが、 "MovableType" の中に含まれている "mt-config.cgi-original" をもとにして "mt-config.cgi" を作ってやる必要がある。 Mac OS X 10.5 の際に説明として使った右図を参考に見ていただきたい。
#================ DATABASE SETTINGS ==================
# REMOVE all sections below that refer to databases
# other than the one you will be using.

##### MYSQL #####
ObjectDriver DBI::mysql
Database mt
DBUser root
DBPassword XXXXX
DBHost localhost
DBSocket /Applications/MAMP/tmp/mysql/mysql.sock
DBPort 8889
として、 "mt-config.cgi" をお作りになればよい。当然のことながら、 "DBPassword XXXXX" の "XXXXX" の部分にはご自分の設定した、 "MySQL" のパスワードを入れておく。
 キモは、最後の2行である。これを入れておかないと "DBD::MySQL" が "MAMP" 搭載の "MySQL" に接続できないのだ。
 以上、作った "mt-config.cgi" を "mt" フォルダに入れておく。こうしておいてから "MovableType" を起動すれば、自動的にアップデートモードとなり、 "MAMP" 搭載の "MySQL" にテーブルが30個以上作られて、貴方の "MAMP" の中で "MovableType" が動き始めるはずである。

コメント(2)

Valuable information. Lucky me I found your website by accident, and I am shocked why this accident did not happened earlier! I bookmarked it.

I am not sure where you're getting your information, but good topic. I needs to spend some time learning much more or understanding more. Thanks for magnificent info I was looking for this information for my mission.

この記事について

この記事は著者が2011年9月17日に書いたものです。

コメントおよびツッコミ大歓迎です。
すべてのコメントに目をとおさせていただいておりますが、そのうちのいくつかを選んで公開しておりますので、ご了承いただけたら幸いです。

この記事は "マックの道具箱" カテゴリ内の記事です。

カテゴリ内の前の記事は
Mac OS X 10.6 と MAMP (Sp)」です。

カテゴリ内の次の記事は
How to install MAMP (DBD::MySQL) on Mac OS X 10.6」です。

最近の記事はメインページで見られます。過去に書かれた記事はアーカイブで見られます。著者自身の撮影した写真は、写真集でご覧になれます。

Made on a Mac