今回は、mysqlを make install してみます。
mysqlでSSL接続ができない場合の原因と対処 でも一部書いていましたが、ここで一つに記事にしました。
そもそも、MySQLを自前でmake しないといけないのは、ほとんどの場合が、デバッグです。
それ以外にあるとは思えない・・・というぐらい、ほとんどの場合は、各ディストリビューションにて提供されるバイナリーパッケージで十分なんですよね。
今回、mysqlを make install しようと思ったのも、やっぱり、デバッグなんです。
mysqlでデバッグ用の情報を出力したいとき、 ./configure --with-debug(=full)
などと指定をして、再構築(make)する必要があるので、やらざるを得ないんですよね。
ということで、今回は、mysql を make install してみることにします。
- 目次
- 履歴
2013年3月27日 初版
mysql を make install してみる
mysql の make 環境を一式インストールする
まず、mysql の 再構築(make)に必要な開発環境(ツール)、ライブラリを一式インストールします。
- 再構築(make)に必要な開発環境(ツール)
CentOS ScientificLinux
# make に必要なコンパイラをインストールします(CentOSの場合) $ yum install make gcc gcc-c++ ...
Debian Ubuntu
# make に必要なコンパイラをインストールします(CentOSの場合) $ aptitude install make gcc g++ ...
- 再構築(make)に必要なライブラリ
OpenSSLライブラリを使ったSSL接続する場合は、opensslの開発用ライブラリが必要になります。
yaSSLライブラリを使ったSSL接続する場合は、mysqlに同梱されているので、SSL接続に必要なライブラリはありません。
CentOS ScientificLinux
# MySQL に必要なライブラリをインストールします # --- yaSSLライブラリを使ったSSL接続する場合は、openssl-develは不要です。 $ yum install readline-devel <span class="edit">openssl-develspan> ncurses-devel zlib-devel ...
Debian Ubuntu
# MySQL に必要なライブラリをインストールします # --- yaSSLライブラリを使ったSSL接続する場合は、libssl-devは不要です。 $ aptitude install libreadline-dev libssl-dev libncurses5-dev zlib1g-dev ...
mysql の ./configure で環境設定を行い、構築(make)する
次に、mysql の ソースコードをダウンロードし、./configure スクリプトで 再構築(make)の環境設定を行い、make install します。
|
[参考: MySQLのソース構成オプション(5.1用)]
フォーマット | 概要 | デフォルト | 挿入バージョン | 削除バージョン |
---|---|---|---|---|
--bindir=DIR |
User executables | EPREFIX/bin |
||
--build=BUILD |
Configure for building on BUILD | guessed |
||
--cache-file=FILE |
Cache test results in FILE | disabled |
||
-C |
Alias for `–cache-file=config.cache’ |
|
||
--config-cache |
|
|||
--datadir=DIR |
Read-only architecture-independent data | PREFIX/share |
||
--disable-FEATURE |
Do not include FEATURE |
|
||
--disable-community-features |
Disable additional features provided by the community |
|
5.1.28 | |
--disable-dependency-tracking |
Disable dependency tracking |
|
||
--disable-grant-options |
Disable GRANT options |
|
||
--disable-largefile |
Omit support for large files |
|
||
--disable-libtool-lock |
Disable libtool lock |
|
||
--disable-thread-safe-client |
Compile the client without threads |
|
5.1.7 | |
--enable-FEATURE |
Enable FEATURE |
|
||
--enable-assembler |
Use assembler versions of some string functions if available |
|
||
--enable-debug-sync |
Compile in Debug Sync facility |
|
5.1.41 | |
--enable-dependency-tracking |
Do not reject slow dependency extractors |
|
||
--enable-fast-install |
Optimize for fast installation | yes |
||
--enable-local-infile |
Enable LOCAL for LOAD DATA INFILE | disabled |
||
--enable-profiling |
Build a version with query profiling code |
|
5.1.24 | |
--enable-shared |
Build shared libraries | yes |
||
--enable-static |
Build static libraries | yes |
||
--enable-thread-safe-client |
Compile the client with threads |
|
5.1.6 | |
--exec-prefix=EPREFIX |
Install architecture-dependent files in EPREFIX |
|
||
-h |
Display this help and exit |
|
||
--help |
|
|||
--help=short |
Display options specific to this package |
|
||
--help=recursive |
Display the short help of all the included packages |
|
||
--host=HOST |
Cross-compile to build programs to run on HOST |
|
||
--includedir=DIR |
C header files | PREFIX/include |
||
--infodir=DIR |
Info documentation | PREFIX/info |
||
--libdir=DIR |
Object code libraries | EPREFIX/lib |
||
--libexecdir=DIR |
Program executables | EPREFIX/libexec |
||
--localstatedir=DIR |
Modifiable single-machine data | PREFIX/var |
||
--mandir=DIR |
man documentation | PREFIX/man |
||
-n |
Do not create output files |
|
||
--no-create |
|
|||
--oldincludedir=DIR |
C header files for non-gcc | /usr/include |
||
--prefix=PREFIX |
Install architecture-independent files in PREFIX |
|
||
--program-prefix=PREFIX |
Prepend PREFIX to installed program names |
|
||
--program-suffix=SUFFIX |
Append SUFFIX to installed program names |
|
||
--program-transform-name=PROGRAM |
run sed PROGRAM on installed program names |
|
||
-q |
Do not print `checking…’ messages |
|
||
--quiet |
|
|||
--sbindir=DIR |
System administrative executables | EPREFIX/sbin |
||
--sharedstatedir=DIR |
Modifiable architecture-independent data | PREFIX/com |
||
--srcdir=DIR |
Find the sources in DIR | configure directory or .. |
||
--sysconfdir=DIR |
Read-only single-machine data | PREFIX/etc |
||
--target=TARGET |
Configure for building compilers for TARGET |
|
||
-V |
Display version information and exit |
|
||
--version |
|
|||
--with-PACKAGE |
Use PACKAGE |
|
||
--with-archive-storage-engine |
Enable the Archive Storage Engine | no |
5.1.9 | |
--with-atomic-ops |
Implement atomic operations using pthread rwlocks or atomic CPU instructions for multi-processor |
|
5.1.12 | |
--with-berkeley-db |
Use BerkeleyDB located in DIR | no |
5.1.11 | |
--with-berkeley-db-includes |
Find Berkeley DB headers in DIR |
|
5.1.11 | |
--with-berkeley-db-libs |
Find Berkeley DB libraries in DIR |
|
5.1.11 | |
--with-big-tables |
Support tables with more than 4 G rows even on 32 bit platforms |
|
||
--with-blackhole-storage-engine |
Enable the Blackhole Storage Engine | no |
5.1.9 | |
--with-charset |
Default character set |
|
||
--with-client-ldflags |
Extra linking arguments for clients |
|
||
--with-collation |
Default collation |
|
||
--with-comment |
Comment about compilation environment |
|
||
--with-csv-storage-engine |
Enable the CSV Storage Engine | yes |
5.1.9 | |
--with-darwin-mwcc |
Use Metrowerks CodeWarrior wrappers on OS X/Darwin |
|
||
--with-debug |
Add debug code |
|
5.1.7 | |
--with-debug=full |
Add debug code (adds memory checker, very slow) |
|
||
--with-embedded-privilege-control |
Build parts to check user’s privileges (only affects embedded library) |
|
||
--with-embedded-server |
Build the embedded server |
|
||
--with-error-inject |
Enable error injection in MySQL Server |
|
5.1.11 | |
--with-example-storage-engine |
Enable the Example Storage Engine | no |
5.1.9 | |
--with-extra-charsets |
Use charsets in addition to default |
|
||
--with-fast-mutexes |
Compile with fast mutexes | enabled |
5.1.5 | |
--with-federated-storage-engine |
Enable federated storage engine | no |
5.1.3 | 5.1.9 |
--with-gnu-ld |
Assume the C compiler uses GNU ld | no |
||
--with-innodb |
Enable innobase storage engine | no |
5.1.3 | 5.1.9 |
--with-lib-ccflags |
Extra CC options for libraries |
|
||
--with-libwrap=DIR |
Compile in libwrap (tcp_wrappers) support |
|
||
--with-low-memory |
Try to use less memory to compile to avoid memory limitations |
|
||
--with-machine-type |
Set the machine type, like “powerpc” |
|
||
--with-max-indexes=N |
Sets the maximum number of indexes per table | 64 |
||
--with-mysqld-ldflags |
Extra linking arguments for mysqld |
|
||
--with-mysqld-libs |
Extra libraries to link with for mysqld |
|
||
--with-mysqld-user |
What user the mysqld daemon shall be run as |
|
||
--with-mysqlmanager |
Build the mysqlmanager binary | Build if server is built |
||
--with-named-curses-libs |
Use specified curses libraries |
|
||
--with-named-thread-libs |
Use specified thread libraries |
|
||
--with-ndb-ccflags |
Extra CC options for ndb compile |
|
||
--with-ndb-docs |
Include the NDB Cluster ndbapi and mgmapi documentation |
|
||
--with-ndb-port |
Port for NDB Cluster management server |
|
||
--with-ndb-port-base |
Port for NDB Cluster management server |
|
||
--with-ndb-sci=DIR |
Provide MySQL with a custom location of sci library |
|
||
--with-ndb-test |
Include the NDB Cluster ndbapi test programs |
|
||
--with-ndbcluster |
Include the NDB Cluster table handler | no |
5.1.9 | |
--with-openssl=DIR |
Include the OpenSSL support |
|
5.1.9 | |
--with-openssl-includes |
Find OpenSSL headers in DIR |
|
5.1.9 | |
--with-openssl-libs |
Find OpenSSL libraries in DIR |
|
5.1.9 | |
--with-other-libc=DIR |
Link against libc and other standard libraries installed in the specified nonstandard location |
|
||
--with-pic |
Try to use only PIC/non-PIC objects | Use both |
||
--with-plugin-PLUGIN |
Forces the named plugin to be linked into mysqld statically |
|
5.1.11 | |
--with-plugins |
Plugins to include in mysqld | none |
5.1.11 | |
--with-pstack |
Use the pstack backtrace library |
|
5.1.54 | |
--with-pthread |
Force use of pthread library |
|
||
--with-row-based-replication |
Include row-based replication |
|
5.1.5 | 5.1.6 |
--with-server-suffix |
Append value to the version string |
|
||
--with-ssl=DIR |
Include SSL support |
|
5.1.11 | |
--with-system-type |
Set the system type, like “sun-solaris10” |
|
||
--with-tags |
Include additional configurations | automatic |
||
--with-tcp-port |
Which port to use for MySQL services | 3306 |
||
--with-unix-socket-path |
Where to put the unix-domain socket |
|
||
--with-yassl |
Include the yaSSL support |
|
5.1.9 | |
--with-zlib-dir=no|bundled|DIR |
Provide MySQL with a custom location of compression library |
|
||
--without-PACKAGE |
Do not use PACKAGE |
|
||
--without-bench |
Skip building of the benchmark suite |
|
5.1.11 | |
--without-debug |
Build a production version without debugging code |
|
5.1.6 | |
--without-docs |
Skip building of the documentation |
|
||
--without-extra-tools |
Skip building utilities in the tools directory |
|
5.1.9 | |
--without-geometry |
Do not build geometry-related parts |
|
||
--without-libedit |
Use system libedit instead of bundled copy |
|
||
--without-man |
Skip building of the man pages |
|
||
--without-ndb-binlog |
Disable ndb binlog |
|
5.1.6 | |
--without-ndb-debug |
Disable special ndb debug features |
|
||
--without-plugin-PLUGIN |
Exclude PLUGIN |
|
5.1.11 | |
--without-query-cache |
Do not build query cache |
|
||
--without-readline |
Use system readline instead of bundled copy |
|
||
--without-row-based-replication |
Don’t include row-based replication |
|
5.1.7 | 5.1.14 |
--without-server |
Only build the client |
|
||
--without-uca |
Skip building of the national Unicode collations |
|
--with-debug
) を除き、CentOSで提供されているMySQLのバイナリーパッケージで指定している ./configure の設定になっています。参考までに、Debian系のバイナリパッケージでは、SSL接続にyaSSLライブラリを使用しますので、
--with-ssl
としています。MySQLの設定オプションは、非常に多いです。そのため、ここでも書ききれていないです。必要に応じて設定する必要があります。 しかしながら、ほとんどの場合はデフォルトの設定でも動作するので、本当に使いたいオプションだけを設定するだけでも、ある程度、満足のいく動作をしてくれるのが良いです。
例えば、デバッグオプションのみを有効にしたいなら、
|
|
|
--with-debug
) を付加した場合、make で 以下のようなエラーが出力されることがあります。
|
|
mysql-5.1.68/cmd-line-utils/libedit/Makefile
|
また、デバッグ情報も必要ない方は、以下のように指定することで上記のようなエラーも出力されません。
|
mysql を デバッグ実行してみる(おまけ)
最後に、せっかく、デバッグ環境で構築してみたので、mysql を デバッグ実行してみましょう。
やることは、MySQLのドキュメントに記載されているとおりです。
まず、デバッグフラグの設定、出力ファイルの設定を行います。
|
設定を終えたら、あとは、実行するだけです。
|
上記のようにMYSQL_DEBUG のデバッグ文が出力されます。
そこで、/tmp/client.trace を確認すると、以下のようになっています。
|
vio_blocking
の中でSSLの接続エラーが検出され、エラー情報が出力されたのが、よくわかると思います。
もし、ソースコードを追いかけたいなら、先のvio_blocking
、あるいは、その上位のssl_do
あたりから、眺めていくと良いと思います。
--debug
で設定することもできます。
|
参考までに、デバッグオプションの構成とその詳細について下記に記載しておきます。
[参考: MySQLのデバック起動オプションの形式]
形式 :
デバッグフラグ[,デバッグ追加情報,デバッグ追加情報 ... ]
(デバッグフラグ: ‘:’ で区切り、複数を指定可)
(デバッグ追加情報: ‘,’ で区切り、複数を指定可(但し、デバッグフラグで必要とされた場合のみ))
デフォルト :
d:t:o,/tmp/mysql.trace
(
o
で出力先を指定することができるので、/tmp/mysql.trace
が有効となります。)[参考: MySQLのデバック起動オプションのデバッグフラグの意味(5.1用)]
フラグ | 概要 |
---|---|
d
|
Enable output from DBUG_<N> macros for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. An empty list of keywords implies output for all macros. |
D
|
Delay after each debugger output line. The argument is the number of
tenths of seconds to delay, subject to machine
capabilities. For example, -#D,20
specifies a delay of two seconds.
|
f
|
Limit debugging, tracing, and profiling to the list of named functions.
Note that a null list disables all functions. The
appropriate d or t
flags must still be given; this flag only limits their
actions if they are enabled.
|
F
|
Identify the source file name for each line of debug or trace output. |
i
|
Identify the process with the PID or thread ID for each line of debug or trace output. |
g
|
Enable profiling. Create a file called dbugmon.out
containing information that can be used to profile the
program. May be followed by a list of keywords that
select profiling only for the functions in that list. A
null list implies that all functions are considered.
|
L
|
Identify the source file line number for each line of debug or trace output. |
n
|
Print the current function nesting depth for each line of debug or trace output. |
N
|
Number each line of debug output. |
o
|
Redirect the debugger output stream to the specified file. The default
output is stderr .
|
O
|
Like o , but the file is really flushed between each
write. When needed, the file is closed and reopened
between each write.
|
p
|
Limit debugger actions to specified processes. A process must be
identified with the DBUG_PROCESS
macro and match one in the list for debugger actions to
occur.
|
P
|
Print the current process name for each line of debug or trace output. |
r
|
When pushing a new state, do not inherit the previous state’s function nesting level. Useful when the output is to start at the left margin. |
S
|
Do function _sanity(_file_,_line_) at each debugged
function until _sanity() returns
something that differs from 0. (Mostly used with
safemalloc to find memory leaks)
|
t
|
Enable function call/exit trace lines. May be followed by a list (containing only one modifier) giving a numeric maximum trace level, beyond which no output occurs for either debugging or tracing macros. The default is a compile time option. |
何かの参考にならばうれしく思います。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :