CentOS 5.3 x86_64 上で MySQL 5.1 をインストールしたいため、自分で RPM を作ってみました。いろいろと検索した結果、Fedora の CVS にあるものが最新でかつ、既存の MySQL 5.0 系と同じような SPEC ファイルのため、これを使うことにしました。
まず、CVS で checkout します。
export CVSROOT=:pserver:anonymous@cvs.fedoraproject.org:/cvs/pkgs
cvs co mysql
そうすると、mysql/devel に MySQL 5.1 系(今日現在では、5.1.34) の SPEC やらパッチファイルなどがあります。SPEC ファイルを ~/rpm/SPEC に、パッチファイルや SPEC ファイルに書かれているパッチやシェルスクリプトなどを ~/rpm/SOURCES にコピーします。
僕の場合は、MySQL を puppet で管理しているため、MySQL の RPM では my.cnf と mysqld.init をわざとインストールしないようにしてあるので、専用のカスタマイズをしています。どうして、このカスタマイズをしているかは MySQL の puppet module を公開したときにあわせて説明したいと思います。
コピーし終わったら、さっそくビルドします。
$ rpmbuild -ba ~/rpm/SPECS/mysql.spec
MySQL をビルドしたあと、テストも実行されるのでけっこう時間がかかります。テストを省略したければ、mysql.spec の runselftest を 0 に設定しましょう。
# 独自の RPM を作ってローカルの yum リポジトリで管理することはよくあることですが、そこで問題になってくるのが SPEC やパッチなどのいわゆる SRPM に含まれるファイルです。Fedora project でどうやら SRPM ではなく SPEC やパッチをまとめて管理してくるようなので、どうやって管理しているか調べてみたいと思います。
# 2009.12.06 追記:
cvs up した fedora cvs の mysql.spec やパッチを手動で自分の rpmbuild ディレクトリにコピーするのは面倒なので、簡単なシェルスクリプトを作成してみた。
#!/bin/sh
SOURCE_DIR=`rpm -E ‘%_topdir’`/SOURCES
SPECS_DIR=`rpm -E ‘%_topdir’`/SPECS
for i in `egrep ‘^Source.*:’ mysql.spec`
do
if [ -f "$i" ]; then
cp “$i” $SOURCE_DIR
fi
done
for i in `egrep ‘^Patch.*:’ mysql.spec`
do
if [ -f "$i" ]; then
cp “$i” $SOURCE_DIR
fi
done
cp ./mysql.spec $SPECS_DIR
Tags: mysql









