oinume journal

Scratchpad of what I learned

MySQL 5.1の最新版のdebパッケージを作成する方法

Ubuntu 9.04にはMySQL 5.1のパッケージが用意されているのですが、バージョンが5.1.31であり最新ではないので(現時点で最新は5.1.37)、最新版のdebパッケージを作成する方法を紹介します。debを作成するといっても、開発中のUbuntuに入っているmysql-server-5.1のソースを持ってきてビルドするだけなので、比較的お手軽にできます。

 

debを作成するための準備

まずはビルドする人間のメールアドレスと名前を環境変数で設定しておきます。

 

$ export DEBEMAIL="hogehoge@foo.com"

$ export DEBFULLNAME="Your Name"

 

 

次にパッケージをビルドするために必要なものをインストールします。

 

$ sudo aptitude install dh-make devscripts debhelper fakeroot lintian sudo pbuilder piuparts dpatch

 

 

ソースの取得

“mysql-dfsg-5.1” source package in Ubuntuよりdevelopmentのkarmicの方のリンクをクリックして、その先の画面で以下の3つのファイルをダウンロードします。

 

 

  • mysql-dfsg-5.1_5.1.37.orig.tar.gz - ソースtarボール

 

 

  • mysql-dfsg-5.1_5.1.37-1ubuntu2.diff.gz - debを作成するためのdiff

 

 

  • mysql-dfsg-5.1_5.1.37-1ubuntu2.dsc - パッケージングのルールを記載したファイル

 

 

 

今回は ~/deb というディレクトリを作成してその中で作業するので、debディレクトリにダウンロードしておきます。

 

mysql-dfsg-5.1のビルド

mysql-dfsg-5.1のビルドに必要なパッケージをインストールしておきます。

 

$ sudo aptitude build-dep mysql-server-5.1

 

 

次にソースを展開します。dpkg-source -x を実行するとソースを展開するだけはなく、パッチも自動的に当ててくれます。

 

$ dpkg-source -x mysql-dfsg-5.1_5.1.37-1ubuntu2.dsc

dpkg-source: warning: extracting unsigned source package (mysql-dfsg-5.1_5.1.37-1ubuntu2.dsc)

dpkg-source: extracting mysql-dfsg-5.1 in mysql-dfsg-5.1-5.1.37

dpkg-source: info: unpacking mysql-dfsg-5.1_5.1.37.orig.tar.gz

dpkg-source: info: applying mysql-dfsg-5.1_5.1.37-1ubuntu2.diff.gz

 

 

そしていよいよビルドです。(私はAthlon X2 5050eの環境で約2時間かかりました)

 

$ cd mysql-dfsg-5.1-5.1.37

$ debuild -us -uc

 

 

場合によっては「"hardening-wrapper"というパッケージがないよ」というエラーになってビルドできないかもしれないので、このパッケージをaptitudeでインストールしておきます。

 

完了すると .deb パッケージが~/deb/配下に作成されているので、必要なものをdpkg -iしてインストールします。ただし、依存関係が若干複雑なのでエラーが出たら依存しているものを先にインストールすると良いでしょう。

 

$ sudo dpkg -i mysql-common_5.1.37-1ubuntu2_all.deb ¥

libmysqlclient16_5.1.37-1ubuntu2_amd64.deb ¥

mysql-client_5.1.37-1ubuntu2_all.deb ¥

mysql-client-5.1_5.1.37-1ubuntu2_amd64.deb

 

$ sudo dpkg -i mysql-server-core-5.1_5.1.37-1ubuntu2_amd64.deb ¥

mysql-server-5.1_5.1.37-1ubuntu2_amd64.deb ¥

mysql-server-5.1_5.1.37-1ubuntu2_amd64.deb

 

 

なお、5.0から5.1にアップグレードするような場合、my.cnfに使えなくなったオプションを書いていたりするとmysqldの起動に失敗するので、エラーログを見て適切に対処しましょう。例えば私の場合は --skip-bdb というオプションが使えなくなっていてエラーになっていました。

 

無事にインストールできれば、これでmysql-server-5.1が最新版になっています。mysqlコマンドでSQLを発行して動作を確認してみて下さい。

 

$ mysql -uroot -pxxxxx

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 68

Server version: 5.1.37-1ubuntu2-log (Ubuntu)

 

 

補足

今回はUbuntu 9.04で試しましたが、Debianでも同じ手順でパッケージを作成することができるはずです。また、debパッケージの作成にあたってDebianパッケージ60分クッキング(PDF)を参考にさせて頂きました。