割と新しい解説を見つけたので挑戦してみました。ports でも package でもない、単なるソースファイルのアーカイブだったので出来るかどうか心配だったのですが、むしろ ports のときよりも上手く行った気がします。まあ、さすがに何の問題もなく出来たわけではなく、何度か悩みました。覚書を兼ねた情報提供のつもりで書いてみることにします。
コマンド実行の例で、頭に shell %>
がついている場合は一般ユーザ、shell #>
が付いている場合はスーパーユーザ(root ユーザ)で行うことを意味します。それぞれ、シェルプロンプトの意味です。必要に応じて切り替えてください。切り替えは su(1) コマンドで行うのが通常です。
最初に必要な作業は、当然ソースアーカイブ(一般的には tar ボールと呼ぶようなので、この日記でもこの名称を使うことにします。tar という圧縮方法でまとめたところから来てるのでしょうか。)の取得です。普通に考えれば配布しているサイトに行って、リンクをたどりながらダウンロードページに行くわけですが、FreeBSD(98) のほうには Lynx しかブラウザを入れていません。Lynx はテーブルに対応していないため、最近の凝ったデザインのページはつらいのです。そこで、Windows のほうでアドレスだけ確認して、そのアドレスを開くことで一気に目的地に行くことにしました。このとき、SSH で作業することによって、アドレスをコマンドラインに貼り付けることが出来ます(SSH クライアントにもよります)。私の場合は Tera Term Pro 日本語版 に TTSSH 日本語版を追加して使っています。
さて、実際にダウンロードをしてみると、どうもあっという間に終わってしまいます。ファイルサイズを見ると、11.3MB のはずなのに、1MB もありません。中身を見てみると HTML です。file(1) コマンドで調べてみると tar ボールと認識されているようです。Windows のほうでも見てみると、ミラーサイトのリストページに飛ばされていました。詳しいことはわかりませんが、拡張子に頼ってしまっているようです。調べてみたら、少なくとも Content-type はちゃんと text/html になっていました。
話を戻しましょう。原因がわかったので、日本国内のミラーサイトからダウンロードします。FTP サーバですが、Lynx で大丈夫です。リンクにカーソルを合わせて(この表現でいいのでしょうか。)、キーボードの D か d を押すとダウンロード開始です。Lynx はどうやら中断できないようなので、時間のあるときにやりましょう。ダウンロードが終わると、今度はそのファイルをどうするかが表示されます。ここで終わっても仕方がないですから、S か s (Save です)を押して、保存場所とファイル名を指定します。保存が終わったら q か Q を押して Lynx を終了します。ちなみに、q の場合は確認がありますが、Q は問答無用で終了します。
さて、ダウンロードしたファイルは圧縮されているので、まずは解凍する必要があります。今回ダウンロードしたファイルは mysql-3.23.49.tar.gz という名前です。tar で圧縮したものを、さらに gzip で圧縮してあるそうです。2回解凍作業をする必要があるように思えますが、tar コマンドを使えばまとめて解凍できてしまいます。次のようにコマンドを入力します。
shell %>
tar zxvf mysql-3.23.49.tar.gz
tar オプション ファイル名 という形式です。オプションは前から、gzip の処理もする、解凍する、詳しい表示をする、ファイルに書き出す、となります。v は要らないような気もしますが、説明ではこうなっていました。かなりずらずらと解凍したファイル名が表示されます。量が半端でないため、しばらく時間がかかります。解凍が終わると、mysql-3.23.49 というディレクトリが同じ場所に出来ますので、その中に移動します。これでやっとインストールのための準備が出来ました。
まずは、インストールする環境に合わせて変更を加えます。configure というシェルスクリプトが用意されていて、一般的にはこれを使います。実行することで、時間はかかりますがほぼ自動で処理が終わります。また、必要に応じてオプションを指定することも出来ます。どんなオプションがあるかは、shell %>
./configure --help と実行することで表示されます。私の場合は、エラーメッセージを日本語で表示して欲しかったので --with-charset=ujis
を、関連するファイルを一まとめにしたかったので --prefix=/usr/local/mysql
をつけました。なお、--prefix で指定したディレクトリは以降の説明でも何度か出てきますので、prefixDir と表記します。各自置き換えてください。
どの段階でやるべきなのかわからないのですが、prefixDir をホームディレクトリとするユーザを作って置いてください。グループ・ユーザ名共に、mysql とする説明が多いようです。これはセキュリティの関係で、専用のユーザを用意しているようです。追加の方法は省略しますので、必要に応じてハンドブック日本語版の Chapter 8. ユーザと基本的なアカウントの管理などで各自確認してください。このユーザはあまり権限を与えず、シェルも一番簡単な sh などで構わないと思います。
処理が終わったら、次はいよいよコンパイルです。shell %>
make と実行しましょう。これで必要な処理が自動で行われます。私の場合はうまくいきましたが、エラーがあれば先ほどの configure で調整したり、場合によってはソースファイルの修正が必要になるかもしれません。運良くうまくいったら、ついにインストールです。shell #>
make install です。ひたすら待ちます。かなり長くなりますから、出かけてしまうくらいのつもりでいましょう。私は寝ていました。
インストールが成功したら、まずは MySQL の設定を保持するデータベース(以下、DB)を初期化します。スーパーユーザで、prefixDir/bin/mysql_install_db
というスクリプトを実行することで行います。次に、ファイルのオーナー(所有者)と所属グループを mysql に変更します。次の2つのコマンドを実行してください。
shell #>
chown -R mysql prefixDir
shell #>
chgrp -R mysql prefixDir
オプションの -R は、指定したディレクトリ以下にある全てのファイルに対して処理をすると言う意味です。ここで一般ユーザである mysql になります。これはスーパーユーザである必要がないのと、このあと実行するシェルスクリプトの所有者が mysql であるためです。
shell %>
prefixDir/bin/safe_mysqld & と実行します。最後の & は、バックグラウンドで実行するためのものです。エラーが出なければ MySQL サーバが起動します。ためしに、MySQL クライアントを起動して、サーバにアクセスできるか確認します。shell %>
prefixDir/bin/mysql -u と実行すると、プロンプトが mysql>
に変わります。show databases; と実行すると、サーバにある DB が表示されます。この時点ではほとんど権限がないユーザとしてサーバにアクセスしているので、test という DB しか扱えません。ちなみに、何もしなければ空です。クライアントの操作は省略します。ひとまず \q で終了します。また、MySQL の root (FreeBSD(98) のスーパーユーザとは別。役割的には同じ。)のパスワードを設定したり、一般ユーザの権限などを設定する必要がありますが、それもここでは省略します。
一通り設定が終わったら、毎回サーバをコマンドで起動しないでも済むように、自動起動するようにします。/etc/rc.d/rc.local
に処理を書き加えると言う説明が多いのですが、ハンドブック日本語版の 6.5. サービスの起動 によると、どうやらこの方法は古いようです。この説明に従い、/usr/local/etc/rc.d/
に必要なファイルをコピーします。MySQL の場合は mysql.server
です。このファイルは、解凍して出来たディレクトリの suport-files
ディレクトリにあります。再起動すればこのシェルスクリプトが実行されるはずなのですが、どうもうまくいきませんでした。とりあえず既にあった Apache のものに習って mysql-server.sh
にしたらうまくいきました。また、パーミッションも同じになるように -xrw------
から -xrwx--x--
に変更しておきました。
インストールが完了したら、prefixDir をパスに加えておきましょう。こうすることで、コマンドの実行が楽になります。やり方はシェルによって違うので、マニュアルを参照するなどして調べてください。
なお、サーバの起動は safe_mysqld
よりも、mysql-server.sh
のほうがお勧めです。起動をする場合は shell %>
/usr/local/etc/rc.d/mysql-server.sh start と実行します。また、start
の代わりに stop
にするとサーバが停止します。どちらでもないときは使い方の説明が表示されます。FreeBSD(98) の起動とシャットダウンでは、同じことが自動的に行われます。最初、なぜシェルスクリプト1つで起動と停止に対応できるのか謎だったのですが、2段落前で紹介した ハンドブック日本語版 6.5. サービスの起動
を読んで納得しました。あえてここでは説明しませんので、ぜひ読んでください。
最後に、tar ボールを解凍して出来たディレクトリで、shell #>
make clean と実行します。これで、インストールのための作業データが削除されます。tar ボール・解凍したファイル・作業用ファイル・インストールしたファイルを合わせると、とてつもないデータ量になります。余分なファイルはしっかり削除しておかないと、あっという間にディスクがゴミで埋まってしまいます。
これで、ひとまず終了です。何度かインストールを経験してはいますが、私はかなりの素人です。間違っている可能性は十分あります。内容の保障は出来ません。説明を信じてやったら大変なことになったとしても、それはあなたの責任です。また、間違いの指摘は大歓迎です。出来るだけ速やかに修正いたします。かなり長くなりましたが、最後まで読んでくださった方、ありがとうございました。この文章が少しでも役に立てば幸いです。