MariaDBのインストール
数多のWebアプリケーションで利用されているリレーショナル・データベース管理システムであるMariaDBをソースコードからインストールする。
MariaDBはMySQLから派生したソフトであり,MySQLとの互換性を重視されているので,ほとんどの場面でMySQLの代わりに使うことができる。
インストール手順
項目 | 説明 |
---|---|
配布元 | MariaDB.org – Supporting continuity and open collaboration |
リポジトリー | MariaDB/server: MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry. |
手順 | |
依存情報 | Build Environment Setup for Linux – MariaDB Knowledge Base |
依存先 (必須) | GNU Make 3.75+, CMake, GCC 3.4.6+, libncurses, zlib, libevent, gnutls or openssl |
依存先 (任意) |
|
依存元 | Nextcloud, Tiny Tiny RSS, GNU Social |
日付 | バージョン | OS | 依存関係 |
---|---|---|---|
2019-05-03 | 10.2.23 | Ubuntu 18.04 | GNU Make 4.2.1, GCC 7.4.0, CMake 3.10.2, libaio 0.3.111, ncurses 6.1, zlib 1.2.11, OpenSSL 1.1.1a |
マニュアルではlibevent必須だが,MariaDB 10.2.23ではなくてもビルドできた。
インストール先を指定しない場合,/usr/local
にMariaDBはインストールされる。MariaDBやMySQLは巨大なパッケージであり,ディレクトリー構成が他のパッケージと異なる。そのため,他のパッケージと分離するために,cmakeのオプションで-DCMAKE_INSTALL_PREFIX="$LOCAL/stow/$PKG-$VER/mysql"
を指定し,mysqlディレクトリーにインストールする。
make
の実行に約40分かかった。MariaDBはパッケージのサイズも約80 MBと大きいので,時間に余裕があるときにインストールするとよいだろう。
インストール後,パスを通すために以下の設定を~/.profile
や~/.bashrc
に記述して読み込ませておく。
## MySQL
export MYSQL_HOME="$LOCAL/mysql"
if [ -d "$MYSQL_HOME" ]; then
PATH="$MYSQL_HOME/bin:$PATH"
CPATH="$MYSQL_HOME/include:$CPATH"
LD_LIBRARY_PATH="$MYSQL_HOME/lib:$LD_LIBRARY_PATH"
LIBRARY_PATH="$LD_LIBRARY_PATH"
MANPATH="$MYSQL_HOME/man:$MANPATH"
MANDATORY_MANPATH="$MANPATH"
PKG_CONFIG_PATH="$MYSQL_HOME/lib/pkgconfig:$MYSQL_HOME/share/pkgconfig:$PKG_CONFIG_PATH"
ACLOCAL_PATH="$MYSQL_HOME/share/aclocal:$ACLOCAL_PATH"
export PATH CPATH LD_LIBRARY_PATH MANPATH MANDATORY_MANPATH PKG_CONFIG_PATH ACLOCAL_PATH
fi
インストール後は起動設定を行う。
git submodule update
cmakeの実行時にgit submodule updateが実行され,submoduleがダウンロードされる。
ただし,そのままやるとダウンロード量が多いので,事前に--depth 999
を指定してダウンロードする。
なお,--depth 99
などダウンロード範囲が少ないと,git submodule update
実行時に以下のエラーが出るので注意する。
From https://github.com/MariaDB/mariadb-connector-c * branch 2c5aebb3bc724c1663c481ba2fedde00ab494fa4 -> FETCH_HEAD Submodule path 'libmariadb': checked out '2c5aebb3bc724c1663c481ba2fedde00ab494fa4' remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 error: Server does not allow request for unadvertised object 926f3a78a64b327475ee6c60b6c8ab4f34253204 Fetched in submodule path 'storage/rocksdb/rocksdb', but it did not contain 926f3a78a64b327475ee6c60b6c8ab4f34253204. Direct fetching of that commit failed.
-DBUILD_CONFIG=mysql_release
MariaDB 10.2.23のcmake実行時に,-DBUILD_CONFIG=mysql_release
を指定すると,リリースビルドとなる。ただし,このオプションをつけるとcmake実行時に以下のエラーがでて,追加の依存関係としてaioを要求された。
-- Running cmake version 3.10.3 -- Looking for include file libaio.h -- Looking for include file libaio.h - not found -- Looking for io_queue_init in aio -- Looking for io_queue_init in aio - not found CMake Error at cmake/build_configurations/mysql_release.cmake:134 (MESSAGE): aio is required on Linux, you need to install the required library: Debian/Ubuntu: apt-get install libaio-dev RedHat/Fedora/Oracle Linux: yum install libaio-devel SuSE: zypper install libaio-devel If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake. Call Stack (most recent call first): CMakeLists.txt:97 (INCLUDE)
-DBUILD_CONFIG=mysql_release
を指定しなければ,このエラーは起きなかった。libaioは公式文書で明記されている依存関係には入っていないが,Linuxでの追加の依存関係のようだ。libaioをインストールすればこのエラーは解消された。
-DCURSES_INCLUDE_PATH="$LOCAL/include" -DCURSES_LIBRARY="$LOCAL/lib"
当初は,以下のコマンドでcmake実行時にインストール先しか指定していなかった。
cmake -DCMAKE_INSTALL_PREFIX="$LOCAL/stow/$PKG-$VER" .
しかし,このコマンドを実行すると,MariaDB 10.2.23では以下のエラーが出てcmakeが失敗してしまった。
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) CMake Error at cmake/readline.cmake:65 (MESSAGE): Curses library not found. Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. Call Stack (most recent call first): cmake/readline.cmake:173 (FIND_CURSES) CMakeLists.txt:330 (MYSQL_CHECK_READLINE) -- Configuring incomplete, errors occurred! See also "/home/senooken/.local/src/mariadb-10.2.14/build/CMakeFiles/CMakeOutput.log". See also "/home/senooken/.local/src/mariadb-10.2.14/build/CMakeFiles/CMakeError.log".
エラーメッセージにある通り,以下のオプションで自分で明示的にncurseのライブラリーとヘッダーのパスを指定する必要があるようだ。
-DCURSES_LIBRARY="$LOCAL/lib" -DCURSES_INCLUDE_PATH="$LOCAL/include"
-DWITH_JEMALLOC=AUTO
MariaDB 10.2.23のcmake実行時に以下のエラーが出てしまった。
== Configuring MariaDB Connector/C CMake Error at cmake/jemalloc.cmake:38 (MESSAGE): jemalloc is not found Call Stack (most recent call first): storage/tokudb/CMakeLists.txt:48 (CHECK_JEMALLOC)
jemallocが欠如しておりエラーが出ているようだ。しかし,jemallocをインストールして再び挑戦しても同じエラーが出た。
cmake/jemalloc.cmakeの冒頭でWITH_JEMALLOC変数をチェックしている。WITH_JEMALLOCの値は以下のコマンドで確認できる。
cmake -LA | grep WITH_JEMALLOC
WITH_JEMALLOC:STRING=static
デフォルトではstaticになっている。staticだと,jemallocのライブラリー名としてjemalloc_picを探し,なければエラーになるようだ。
そこで,cmakeのオプションに-DWITH_JEMALLOC=AUTO
に指定する。static以外のYES/NO/AUTOから任意の値を指定することで,エラーを回避した。
make test (ctest) の失敗
MariaDB 10.2.23のmake test (ctest) が失敗した。
The following tests FAILED: 17 - aes (Failed) 25 - conc336 (Failed) 26 - bulk1 (Failed) 27 - performance (Failed) 28 - basic-t (Failed) 29 - fetch (Failed) 30 - charset (Failed) 31 - logs (Failed) 32 - cursor (Failed) 33 - errors (Failed) 34 - view (Failed) 35 - ps (Failed) 36 - ps_bugs (Failed) 37 - sp (Failed) 38 - result (Failed) 39 - connection (Failed) 40 - misc (Failed) 41 - ps_new (Failed) 42 - thread (Failed) 43 - features-10_2 (Failed) 44 - dyncol (Failed) 45 - async (Failed) Errors while running CTest make: *** [Makefile:107: test] Error 8
解決できる気がしなかったので,遺憾ながらテストに失敗した状態でmake installした。
“MariaDBのインストール” に対して4件のコメントがあります。