Ubuntu 18.04 LTS で MariaDB Community Server 10.4 をビルド


Ubuntu 18.04 LTS 上でソースコードから MariaDB Community Server 10.4 をビルドする手順をまとめます(GitHub Actions では CentOS 7 が選択できない)。

GitHub レポジトリの 10.4 ブランチから clone

MariaDB Community Server 10.4 のソースコードを GitHub レポジトリから clone します。

git clone --branch 10.4 https://github.com/MariaDB/server.git

依存パッケージのインストール

以下のドキュメントに記載されている,

以下の deb パッケージをインストールします。

sudo apt-get -y update
sudo apt-get install -y software-properties-common devscripts equivs

さきほど clone した ソースコードの server/debian ディレクトリにある,autobake-deb.sh を実行します。

cd server
~/server$ ./debian/autobake-deb.sh
Incrementing changelog and starting build scripts
Creating package version 1:10.4.9+maria~bionic ...
dpkg-buildpackage: info: source package mariadb-10.4
dpkg-buildpackage: info: source version 1:10.4.9+maria~bionic
dpkg-buildpackage: info: source distribution bionic
dpkg-buildpackage: info: source changed by vagrant <[email protected]>
dpkg-buildpackage: info: host architecture amd64
 dpkg-source -I --before-build server
dpkg-checkbuilddeps: error: Unmet build dependencies: bison chrpath cmake (>= 2.7) dh-apparmor dh-systemd gdb libaio-dev libboost-dev libcrack2-dev (>= 2.9.0) libjemalloc-dev (>= 3.0.0~) libjudy-dev libkrb5-dev libncurses5-dev (>= 5.0-6~) libnuma-dev libpam0g-dev libpcre3-dev (>= 2:8.35-3.2~) libreadline-gplv2-dev libsnappy-dev libssl-dev | libssl1.0-dev libsystemd-dev libxml2-dev libzstd-dev unixodbc-dev uuid-dev zlib1g-dev (>= 1:1.1.3-5~)
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)

dpkg-checkbuilddeps: error: Unmet build dependencies: で始まる行に記載されている不足している依存パッケージをインストールします。

sudo apt-get install -y bison chrpath cmake dh-apparmor dh-systemd \
  gdb libaio-dev libboost-dev libcrack2-dev libjemalloc-dev \
  libjudy-dev libkrb5-dev libncurses5-dev libnuma-dev libpam0g-dev \
  libpcre3-dev  libreadline-gplv2-dev  libsnappy-dev libssl-dev \
  libsystemd-dev libxml2-dev libzstd-dev unixodbc-dev uuid-dev zlib1g-dev

再度 ./debian/autobake-deb.sh を実行します。

~/server$ ./debian/autobake-deb.sh
Incrementing changelog and starting build scripts
Creating package version 1:10.4.9+maria~bionic ...
dpkg-buildpackage: info: source package mariadb-10.4
dpkg-buildpackage: info: source version 1:10.4.9+maria~bionic
dpkg-buildpackage: info: source distribution bionic
dpkg-buildpackage: info: source changed by vagrant <[email protected]>
dpkg-buildpackage: info: host architecture amd64
 dpkg-source -I --before-build server
 debian/rules clean
dh clean --parallel --with systemd --list-missing
   dh_clean -O--parallel -O--list-missing
        rm -f debian/debhelper-build-stamp
...略...

インストール

make install で /usr/local/mysql にビルドしたバイナリ等がコピーされます。

sudo make install

/usr/local/mysql/INSTALL-BINARY にインストール手順が記載されていますので,

 #!/bin/sh -x

 groupadd mysql
 useradd -g mysql mysql
 cd /usr/local/mysql
 chown -R mysql:mysql .
 scripts/mysql_install_db --user=mysql
 chown -R root .
 chown -R mysql data

で初期データの作成,owner/permission設定が行えます。以下のコマンドで MariaDB Community Server を起動できます。

/usr/local/mysql/bin/mysqld_safe --user=mysql &

MariaDB monitor を起動します。

$ /usr/local/mysql/bin/mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.9-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

debug フラグを付与してビルド

デバッグ用のバイナリをビルドする際には,以下のスクリプトを実行します。

./BUILD/compile-amd64-debug-max

バージョンは以下のように 10.4.9-MariaDB-debug となります。

$ /usr/local/mysql/bin/mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.9-MariaDB-debug Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT @@version;
+----------------------+
| @@version            |
+----------------------+
| 10.4.9-MariaDB-debug |
+----------------------+