DarwinPortsからMySQL4.1をインストール

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

トラックバック

RonR を MacMini に構築しようとして、DarwinPorts で MySQL4 をインストールしようとしたときのこと。 inputlog &...

コメント

きのうはアカウントっぽい完成された!


コメントはすぐには反映しません。
ほぼ毎日チェックしていますが、翌日以降の反映となることもあります。

Twitter