このエントリーをはてなブックマークに追加

MySQL の公式 RPM を使おう

今まで、前に紹介した方法で、自分で MySQL の RPM をビルドしていたのですが、次の点が不満でした。

  • コンパイルにかなりの時間がかかる
  • コンパイル後の、テストが必ず失敗する(SSL まわりのエラーなので、テストは必ずしないように変更していた)
  • なぜか、InnoDB plugin が無効になってしまって、InnoDB plugin を普通に試せない

ということで、QA もちゃんとされている MySQL の公式 RPM に切替えてみることにしました。

まず、現在の MySQL 5.1 の最新バージョンは 5.1.44 です。MySQL の公式サイトでは RHEL5 用の x86_64 の RPM が用意されています。
RHEL5 x86_64 用の RPM は、次のものをダウンロードすることができます。

  • MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-community-5.1.44-1.rhel5.src.rpm
  • MySQL-community-debuginfo-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-embedded-community-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-shared-community-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-shared-compat-5.1.44-1.rhel5.x86_64.rpm
  • MySQL-test-community-5.1.44-1.rhel5.x86_64.rpm

次のそれぞれの RPM に、どんなものが含まれているか調査してみました。

MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm
/usr/bin/mysql など、MySQL クライアントようのコマンドが含まれています。

MySQL-community-5.1.44-1.rhel5.src.rpm
SRPM です。mysql-5.1.44.rhel5.spec と mysql-5.1.44.tar.gz が含まれています。

MySQL-community-debuginfo-5.1.44-1.rhel5.x86_64.rpm
MySQL のデバッグシンボル情報です。

MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
mysql_config コマンドと MySQL のヘッダーファイルが含まれています。

MySQL-embedded-community-5.1.44-1.rhel5.x86_64.rpm
MySQL の組み込む用途に使われる /usr/lib64/mysql/libmysqld.a が含まれています。

MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm
mysql の sysinit スクリプト、my.cnf 設定ファイルなど MySQL サーバに必要なプログラムが含まれています。

MySQL-shared-community-5.1.44-1.rhel5.x86_64.rpm
/usr/lib64/libmysqlclient.so と libmysqlclient_r.so が含まれています。

MySQL-shared-compat-5.1.44-1.rhel5.x86_64.rpm
MySQL-shared-community の複数のバージョンが含まれています。

MySQL-test-community-5.1.44-1.rhel5.x86_64.rpm
mysql_client_test コマンドが含まれています。

次に、CentOS で提供されているパッケージ名と MySQL 公式のパッケージ名の対応は、次のとおりになります。さらに詳しい RPM の説明は、MySQL 公式サイトを参照しましょう。

mysql:               MySQL-client-community + MySQL-shared-community
mysql-bench:   該当なし
mysql-devel:    MySQL-devel-community
mysql-server:  MySQL-server-community
mysql-test:      MySQL-test-community

MySQL 公式の RPM を使うには、既存の CentOS から提供されているパッケージを上書きするようなダミーパッケージを作成したほうが便利だろうと考えました。なぜなら、既存の MySQL 以外のパッケージで、mysql や mysql-devel のパッケージ依存関係が設定されているときにやっかいだからです。具体的には、このような現象が想定されるからです。

一度ダミーパッケージを作って、公式の RPM もローカルの yum リポジトリに入れてインストールとすると、どうも不思議な感じになってしまいました。具体的には、mysql パッケージをインストールすると、なぜか MySQL-server-community パッケージがインストールされてしまいました。

公式の RPM をよく見てみると、なんと Provides が設定されているじゃありませんか!
公式の RPM では、次のようにちゃんと Provides が設定されています。

MySQL-client: mysql-client MySQL-client
MySQL-server-community: msqlormysql mysql-server mysql MySQL MySQL-server
MySQL-test-community: mysql-test MySQL-test
MySQL-devel-community: mysql-devel MySQL-devel
MySQL-shared-community: mysql-shared MySQL-shared
MySQL-embedded-community:  mysql-embedded MySQL-embedded
MySQL-test-community: mysql-test MySQL-test

なので、mysql パッケージ名を指定すると MySQL-server-community パッケージがインストールされるんですね。。。ということで、小文字のパッケージ名でもちゃんとインストールできます。。。ダミーパッケージを作成したのが無駄になってしまいました、お恥ずかしい。。。

一点だけ注意点があって、mysql というパッケージ名は MySQL-server-community で Provides されているので、MySQL サーバが入ってしまうということです。もし、あるパッケージに mysql というパッケージの依存関係があると MySQL-server-community パッケージがインストールされてしまうので注意しましょう。

まとめると、ダミーパッケージは必要なく、MySQL の公式パッケージだけで、次のコマンドで MySQL の最新バージョンを手軽に使うことができます。

$ sudo yum install mysql-client mysql-shared mysql-server

上のコマンドで MySQL をインストールする場合、MySQL の公式 RPM の方がバージョンが新しいので必ず MySQL 5.1.44 がインストールされるはずです。

ですが、正しくバージョンを指定して、MySQL のバージョンをインストールした場合は、次のようにします。

$ sudo yum install mysql-client-5.1.44 mysql-shared-5.1.44 mysql-server-5.1.44

ただし、RPM に登録されるパッケージ名は、MySQL-*** となるので注意しましょう。mysql* という小文字のパッケージでは登録されていないので気をつけてください。

また、mysql の設定ファイル(/etc/my.cnf と /etc/mysqlmanager.passwd)は、インストールされていないので自分で設置しましょう。
デフォルトの /etc/my.cnf は、このあたりの情報をもとにして設定を追加するといいと思います。

ちなみに MySQL の公式 RPM は、cobbler でローカルの yum リポジトリにミラーしていますが、こんな感じで設定してあります。

$ sudo cobbler repo report –name=mysql-MySQL-5.1

repo: mysql-MySQL-5.1
arch: x86_64
breed: rsync
comment:
created: Tue Feb  9 22:34:22 2010
createrepo_flags: -c cache -d
environment: {}
keep updated: True
mirror: rsync://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/
mirror locally: True
modified : Tue Feb  9 22:34:22 2010
owners: [‘admin’]
priority: 99
rpm list:
yum options: {}

こうしておけば、MySQL 5.1 系の最新バージョンがでたとき、cobbler reposync すればすぐに最新版の RPM をローカルの yum リポジトリにミラーできるので、とても便利です。

さて、これで MySQL をメジャーアップグレードする準備が整いました。

2 Comments

Comments are closed.