Linux: MySQL 5.5 Kompilieren

Ja.. eigentlich ist so eine MySQL Kompilierung keinen Blog-Eintrag wert.
Da sich aber der Build-Vorgang von Mysql 5.1 zu 5.5 erheblich unterscheidet, wollte ich gerade deswegen einen Eintrag schreiben (außerdem nötigte mich Jann dazu 😀 ).

Was hat sich nun geändert an dem Build-Vorgang des MySQL´s?
Im Prinzip benutzt man heutzutage bei Oracle zum kompilieren von MySQL CMake (http://www.cmake.org).
Dies bedeutet als aller aller aller aller aller aller aller erstes erst einmal: wir müssen ein CMake installieren um MySQL Kompilieren zu können.

Da wir alle ein Debian besitzen (oder eine Debian Build-Chroot auf einem Nicht-Debian System) können wir CMake ganz einfach wie folgt mit dem Lieblings-Paketmanager nach installieren:

apt-get install cmake

Ich gehe davon aus das wir die Source in /src liegen haben und dort auch kompilieren:

# cd /src
# wget http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.19.tar.gz/from/http://mysql.mirrors.ovh.net/ftp.mysql.com/
# mv index.html mysql-5.5.19.tar.gz
# tar -xvzf mysql-5.5.19.tar.gz
# cd mysql-5.5.19

Soo… und JETZT kommt das ungewöhnliche an dieser Stelle…
Na? Wer hats bemerkt?
3…2…1… genau! es gibt kein ./configure mehr!
Aber warum? wo ist es hin? warum sollte man dies weg nehmen? Was fangen wir jetzt ohne das All-Mächtige configure an? Wie kompiliert man eine Software ohne >es< ? Kaum eine Sekunde der gefühlten 90 Jahre ratsamslosigkeit verging ohne das ich krampfhaft Panik schob, dass ich vielleicht nie wieder mehr ein MySQL aus meinen eigenen Händen zum leben erwecken könnte. Euch dieses gefühl zu ersparen war ebenfalls ein Grund diesen Eintrag hier zu schreiben! Im prinzip kann man sagen: Alles bleibt anders 🙂 Es gibt mehrere Wege wie man von hier aus zum Ziel gelangen kann. Für alle, die das alte configure script so gern hatten gibt es auf unbestimmte zeit einen Wrapper, der die alten Configure Flags auf CMake-Style umsetzt. Diesen Wrapper erhalten wir so:

# cd /src/mysql-5.5.19
# ./BUILD/autorun.sh

Und tatsächlich.. im selben Verzeichnis gibt es wieder ein ./configure Script.
Das hat nun den nicht zu unterschätzenden Wert, das man mit seinen gewohnten configure Flags weiter arbeiten kann.
Hat aber auch den nicht überschätzbaren Nachteil, dass dieses configure Script nur ein Wapper ist, der 1. kein –help versteht und 2. nur für unbestimmte Zeit seitens MySQL mitgeliefert wird.

Der Normale Weg, welcher auch so bleiben wird, ist sich mit den CMake Parametern anzufreunden.
Eine Übersicht der einstellbaren Parameter findet man HIER.
Für meine MySQL Installation sieht das zusammengefasst wie folgt aus:

cmake . -DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_INSTALL_PREFIX=/srv/mysql \
-DMYSQL_UNIX_ADDR=/srv/mysql/mysql.sock \
-DMYSQL_DATADIR=/srv/mysql/mysqldata \
-DENABLED_LOCAL_INFILE=true \
-DWITH_COMMENT=frickelblog.de_MySQL_5.5 \
-DWITH_EXTRA_CHARSETS=All \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=0 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=0 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=0 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=0 \
-DWITHOUT_INNOBASE_STORAGE_ENGINE=1

Als AUgabe com CMake erhält man dann:

-- MySQL 5.5.19
-- Configuring done
-- Generating done
-- Build files have been written to: /src/mysql-5.5.19

So.. was nun?
Ab hier bleibt alles gleich wie immer… naja fast… 😉
nach dem configure kommt das make und make install.
Spanned gelungen ist die prozentuale und bunte Anzeige vom make, um optisch zu sehen wie lang das MySQL wohl noch zum kompilieren brauchen wird.
Das bunte kann ich hier leider nicht nachstellen (bin zu faul nen Screenshot zu machen) – aber das mit den Prozenten kann man hier auch sehen:

[ 99%] Building CXX object sql/CMakeFiles/sql.dir/sys_vars.cc.o
[ 99%] Building CXX object sql/CMakeFiles/sql.dir/sql_truncate.cc.o
[ 99%] Building CXX object sql/CMakeFiles/sql.dir/datadict.cc.o
[100%] Building CXX object sql/CMakeFiles/sql.dir/sql_reload.cc.o
[100%] Building CXX object sql/CMakeFiles/sql.dir/sql_yacc.cc.o
[100%] Building CXX object sql/CMakeFiles/sql.dir/sql_builtin.cc.o
Linking CXX static library libsql.a
[100%] Built target sql
Scanning dependencies of target mysqld
[100%] Building CXX object sql/CMakeFiles/mysqld.dir/main.cc.o
Linking CXX executable mysqld
[100%] Built target mysqld
Scanning dependencies of target udf_example
[100%] Building C object sql/CMakeFiles/udf_example.dir/udf_example.c.o
Linking C shared module udf_example.so
[100%] Built target udf_example
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process

Dies sind die letzten Zeilen des „make“ Befehls – hübsch oder? 🙂

Nach dem Make noch folgende Schritte durchführen:

# make install
# cd /srv/mysql
# ./scripts/mysql_install_db --force
# chown -R mysql /srv/mysql/

Und dann kann man auch schon sein frisch kompiliertes MySQL 5.5 aufrufen:

# /srv/mysql/bin/mysqld --user=mysql --datadir=/srv/mysql/data &

Ich hoffe ich konnte mit diesem Eintrag (mal wieder) dem ein oder anderen helfen 🙂

leave your comment


*

Unterstütze den Frickelblog!