DarwinPortsからMySQL4.1をインストール
2006/05/16 21:15
DarwinPortsのエントリーの続き。
DarwinPortsがインストールされた状態からmysql4パッケージを導入する為には、コマンドラインから
sudo port install mysql4
と入力する。4.x系と言っても4.0と4.1では大違いなのだが、実際にインストールされるのは4.1の最新バージョン。
DarwinPorts版MySQL4.1をオフィシャル版パッケージと比較してみると、残念ながらインストール後に即利用出来るほど完成度の高いものではない。これは今日時点での話で、将来のバージョンでは解決している可能性が高いが、取り急ぎの対応は必要だ。
以下、注意点を気付いた限りで箇条書きする。(DarwinPortsのPrefixを/opt/localとする)
- mysqldの実行ユーザーであるmysqlアカウントに、/opt/local/var/db/mysql及び/opt/local/var/run/mysqldディレクトリへの書き込み権限がない。これらのディレクトリの所有者を、事前にmysqlに変更しておく必要がある。(mysqlアカウントはOSにビルトインされている為、新規追加する必要はない)
- 初期DBは生成されない。ソースからのインストールと同様に、事前にmysql_install_dbコマンドを実行しておく必要がある。
- 起動スクリプトが提供されない。OSの起動と同時にmysqldを起動させる為には、別途起動スクリプトを用意する必要がある。
- my.cnfの置き場所は/etcではなく、/opt/local/etc/mysql4。(/etcに置いても機能しない)
起動スクリプトの設置方法としては主に、Tiger由来のlaunchdを使った方法と、旧来の/Library/StartupItemsディレクトリを使った方法の2種類がある。
Pantherを利用する機会もまだ少なくないと思われるので、より汎用の高い後者の方法を備忘録として記録しておく。(以下)
まず、/Library/StartupItemsディレクトリの中にサブディレクトリを作る。(ここでは仮に、 MySQL41Ports とでも命名しておく)
$ sudo mkdir /Library/StartupItems/MySQL41Ports
この/Library/StartupItems/MySQLPortsディレクトリ内に、 StartupParameters.plist というテキストファイルを、以下の内容で書き込む。
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>MySQL 4.1</string>
<key>OrderPreference</key>
<string>None</string>
<key>Provides</key>
<array>
<string>MySQL</string>
</array>
<key>Uses</key>
<array>
<string>Network</string>
<string>Resolver</string>
</array>
</dict>
</plist>
同様に、/Library/StartupItems/MySQLPortsディレクトリ内に、 ディレクトリと同名の MySQL41Ports というシェルスクリプトを、以下の内容で書き込む。パーミッションは755。
#!/bin/sh
prefix=/usr/local/ports
StartService ()
{
$prefix/bin/mysqld_safe > /dev/null 2>&1 &
}
StopService ()
{
$prefix/bin/mysqladmin -u root shutdown > /dev/null 2>&1
}
if [ -z $1 ] ; then
echo "Usage: $0 [start|stop|restart] "
exit 1
fi
test -r /etc/rc.common || exit 1
. /etc/rc.common
case $1 in
start)
if [ "${MYSQL41PORTS:=-NO-}" = "-YES-" ] ; then
ConsoleMessage "Starting MySQL database server"
StartService
fi
;;
stop)
ConsoleMessage "Stopping MySQL database server"
StopService
;;
restart)
ConsoleMessage "Restarting MySQL database server"
StopService
StartService
;;
esac
お恥ずかしい話だが、シェルスクリプトはあまり得意ではないので、おかしなところに気付いた方は指摘して欲しい。もっとも、必ずしもシェルスクリプトである必要はない様だが。
最後に、/etc/hostconfigに以下の一行を加える。
MYSQL41PORTS=-YES-
これで、DarwinPorts版MySQLを自動起動するお膳立ては完了。
OSをリブートしても構わないし、以下の様にして起動スクリプトを直接叩いてもいい。
/Library/Startup/MySQL41Ports/MySQL41Ports start
