前回、MySQLのソースコードを入手する方法を解説しました。今回は、MySQLのビルドに欠かせないツール「CMake」を使う準備をします(編集部)
前回からMySQLの解説に入りました。まずはビルドをするためにソースコードを入手する方法について解説し、公式バイナリが存在することを説明しました。
公式バイナリが存在する場合は、そもそもビルドすべきかという点も検討すべきだと説明しました。筆者は基本的にソースコードからのビルドを好みますが、やはり状況に応じて柔軟に対応することが大切です。本連載では、前回に説明したようにビルドしなければ不可能なことがある点を重視して、ビルドする道を選びます。
本連載では、これまでApache HTTP Server(以下Apache)やPHPをソースコードからビルドしてインストールする方法を解説してきました。細かいところを見ると、いろいろな違いがありましたが、configureスクリプトとmakeをビルドツールとして使うという点では共通していました。
しかし、MySQLをビルドするときはconfigureスクリプトは使いません。ApacheやPHPは、いずれも「configure; make; make install」という流れで設定、ビルド、インストールができましたが、MySQLではCMakeというビルドツールを使います(図1)。ビルドツールと呼ぶものがどういうものかは、第9回〜第12回で解説していますので参照してください。
CMakeはconfigureと異なり、さまざまなOSで使える点を特徴としているビルドツールです。configureスクリプトは、UNIXやLinuxで実行することを前提としています。もちろん、Windowsでは実行できません。
皆さんご存じの通り、MySQLにはWindows版も存在します。configureはWindowsでは実行できませんから、別の方法によってビルド時の設定を行わなければなりません。そのため、ビルド時に必要な設定情報を統一できず、それぞれのOSごとに用意しなければならないという問題が発生するのです。
CMakeは、さまざまなOSに対応するだけでなく、それぞれのOSで同じように使えるビルドシステムです。CMakeを採用しているソフトウェアは、どのOSでも同じような方法でビルド時の設定ができます。MySQLのように多様なOSに対応するソフトウェアでは、CMakeのような多種のOSに対応するビルドツールを採用するようになってきています。多様なOSに対応するビルドツールはほかに、SConsやwafといったものもあります。
UNIXやLinuxにおいては、CMakeはconfigureと同じく、Makefileを生成するツールという位置付けになります。従って、作業の流れは「cmake; make; make install」のように、configureスクリプトをCMakeで置き換えることになります。なお、WindowsでCMakeを実行すると、Visual Studioなどの開発環境に向けたプロジェクトを生成し、ビルドできる状態にします。
つまり、CMakeはコンパイルできる環境を整えるところまでを担当するわけです。コンパイルの実行はmakeに任せます。一方、先に紹介したSConsやwafはCMakeとは異なった考え方に基づいており、コンパイルやインストールまで処理できるようになっています。
なお、MySQLのビルドでconfigureスクリプトを使うことを止めたのはMySQL 5.5からです。5.1まではconfigureスクリプトを使います。CMakeを使ってMySQL 5.5をビルドする場合と、configurteスクリプトを使ってMySQL 5.1をビルドする場合を比較すると、ビルド時に設定する内容にはほとんど違いがありません。MySQL 5.1をビルドした経験がある方なら、MySQL 5.5のビルド手順もすぐに飲み込めるでしょう。
configureスクリプトはそれぞれのソフトウェアに付属しているもので、そのソフトウェア専用にあらかじめ生成したものでした。configureスクリプトを使えば、コンパイラやmakeなど、多くのOSが標準で備えているツールでビルドできます。一方、CMakeを使うにはまずCMakeをインストールしなければなりません。
CMakeをインストールする方法は3つあります。ディストリビューションのパッケージ管理システムを利用する、公式バイナリ、そしてソースからビルドです。どの方法でも特別問題はありませんが、ディストリビューションのパッケージ管理システムを利用すると、古いバージョンしかインストールできないこともあり得ますので、その点の確認が必要です。
MySQLのビルドに最低限必要なCMakeは、バージョン2.6となっています。CentOS 5.7ならパッケージ管理システムを利用することでCMake 2.6.4をインストールできますので、これをそのまま利用してもMySQLは問題なくビルドできます。パッケージ管理システムを使ってCMakeをインストールするには次のコマンドを実行します。
$ sudo yum install cmake
CMakeを利用するにはコマンド「cmake」を実行します。インストールが済んだら、次のようにコマンドが実行できることと、バージョンを確認しましょう。
$ cmake --version cmake version 2.6-patch 4
ディストリビューションのパッケージ管理システムがCMakeを扱っていないこともあります。扱っていたとしても、バージョンが2.6よりも古くて、MySQLのビルドに使えないこともあります。このようなときは、公式バイナリを利用するかソースからビルドするしかありません。最新のCMakeを使いたい場合も同じです。本稿執筆時点でCMakeの最新バージョンは、図1にもあるように2.8.7です。2.6は1つ前のメジャーバージョンとなります。
公式バイナリをインストールする方法は簡単です。CMakeのLinux版公式バイナリは、アーカイブを展開するだけで準備が整います。特に解説することもないでしょう。ただし、CMakeのダウンロードページ(図2)を見ると分かるように、CMakeの公式バイナリは、Windows、Mac OS X(64bit版、32bit版)、Linuxのほか、3種類のOSに対応したものしか存在しません。また、Linuxの64bit版(x64)にも対応していません。
連載第1回で説明していますが、この連載ではCentOS 5.xの64bit版を使うことを前提に解説を進めてきました。64bit環境では32bitバイナリも動作しますので、公式バイナリを使っても問題はありません。バイナリを使えば、ビルドする必要もありません。公式バイナリで十分と考えることもできます。しかし、CMakeをビルドする方法は一風変わっているので、ソースコードからのビルドする方法をお見せします。
CMake自身のビルドツールも、実はCMakeです。これをソースコードからビルドするとなると、鶏が先か卵か先かといった疑問が出てきます。これを解決するために、ちょっと変わった手順になっています。
最初に、bootstrapスクリプトを実行します。このスクリプトは、最小限の機能を備えるcmakeコマンドをビルドするスクリプトです。cmakeコマンドができたら、このcmakeコマンドを使ってCMake自身を再度設定し、全体をビルドする最終的なMakefileを生成します。bootstrapスクリプトを実行するときは、以下のように最終的なインストール先なども指定します。
$ ./bootstrap \ --prefix=/opt/cmake-2.8.7 \ --no-system-libs \ |& tee bootstrap_log.txt
3行目の「--no-system-libs」は、CMakeが依存する外部ソフトウェアに関する指定です。このように指定すると、OSが備えるものではなく、CMakeに付属するものを使うことになります。
付属の外部ソフトウェアを使うときは注意が必要であることは、これまで何度か解説しました(第20回など)。しかし、CMakeをビルドするときは、ほかのソフトウェアとリンクすることがありません。CMake付属の外部ソフトウェアを使用する指定で問題ないでしょう。
次に、CMakeCache.txtのCMAKE_BUILD_TYPE行を次のように書き換えます。このように設定すると、コンパイラの最適化オプションが有効になります。
CMAKE_BUILD_TYPE:STRING=Release
ここまで済んだら、最終的なビルドを実行します。以下のようにコマンドを実行してください。
$ make VERBOSE=1 |& tee make_log.txt
CMakeで生成したMakefileはそのまま実行すると、コンパイルで実行しているコマンドを表示しません。百分率(パーセント)で表した作業の進行度と、その時点の作業対象ファイルだけを表示します。「VERBOSE=1」をmakeの引数に指定することで、実行しているコマンドを表示するようになります。
コンパイルが終了したらテストを実行し、インストールします。以下のコマンドを実行してください。
$ make test |& tee make-test_log.txt $ sudo make install |& tee make-install_log.txt
これで最新のCMakeが/opt/cmake-2.8.7にインストールできました。サーチパスに/opt/cmake-2.8.7/binを追加して、正しく起動するか確認します。
$ cmake --version cmake version 2.8.7
これで、cmakeを使う準備が整いました。次回からcmakeを使ってMySQLをビルドする方法を解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.