質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.01%

MySQLをcmakeでコンパイルして失敗する

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,043

kanrin0

score 32

CentOS6.7(64bit)
の環境に、MySQL(ソース)をcmakeでコンパイルしようと下記のようにしました。

[root@hostname mysql-5.7.13]#cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled

しかし、以下のエラーとなってアボートします。

CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/usr/local/bin
CMake Error: Error executing cmake::LoadCache(). Aborting.

ここに至るまで、以下、
1.MySQLソースファイル(mysql-5.7.13)のダウンロード
cd /usr/local/src
wget ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz
tar xzvf mysql-5.7.13.tar.gz

2.CMakeのインストール
wget http://www.cmake.org/files/v3.3/cmake-3.3.1.tar.gz
tar xzvf cmake-3.3.1.tar.gz
cd cmake-3.3.1
./configure
make
porg -lD "make install"

3.ncursesのインストール 
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
tar xzvf ncurses-6.0.tar.gz 
cd ncurses-6.0
./configure --with-shared --with-normal
make
porg -lD "make install"

を実行しています。(参考:http://qiita.com/ksugawara61/items/f42a796488d227e4f79e)

お分かりになる方、ご教示お願い申し上げます。

ーーーーーーーーーーー
coco_bauerさま
コメントいただきありがとうございます。
>CMAKE_ROOTという環境変数はありますか?
Linux初心者につき、調べ方がわかりません。
すみませんがこれも含めましてお教え願えればと思います。

ーーーーーーーーーーー
katsukoさま
コメントいただきありがとうございます。
cmake --system-information | grep CMAKE_ROOT
の結果は
CMAKE_ROOT "/usr/local/share/cmake-3.3"
でした。
which cmake
/usr/local/bin/cmake
でした。
/usr/local/bin/cmake --version
cmake version 3.3.1
です。

ーーーーーーーーーーー
CHERRYさま
コメントいただきありがとうございます。

コマンドラインより、env実行し、CMAKE_ROOTは確認できませんでした。
HOSTNAME=hogehoge
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=ja_JP.UTF-8
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=:0.0
G_BROKEN_FILENAMES=1
XAUTHORITY=/root/.xauthp5PzIn
_=/bin/env

のような結果です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • coco_bauer

    2016/07/08 17:26

    CMAKE_ROOTという環境変数はありますか? CMAKE_ROOTには、cmakeのモジュールが入っているディレクトリが設定されていますか? 正しく設定されているかを確認してください。

    キャンセル

  • katsuko

    2016/07/08 22:26

    「cmake --system-information | grep CMAKE_ROOT」と「which cmake」も試してください。
    なんとなく、ディストリビューションのcmakeがインストールされているのに更にインストールしちゃった、てな感じがするのですが、憶測なので回答は控えておきます。

    キャンセル

  • CHERRY

    2016/07/11 07:38

    コマンドラインで、env (リターン) で、環境変数の一覧が、表示されると思います。

    キャンセル

回答 1

checkベストアンサー

+1

ちょっと長くなりそうなので、解決案ではありませんが回答欄にて返事を。
一応、以下の点を確認してください。

 キャッシュのクリア

MySQLのソースコードディレクトリ(「/usr/local/src/mysql-5.7,13」ですかね?もし違っていたら、読み換えてください。)に、もし「CMakeCache.txt」というファイルがあれば 削除して、もう一度cmakeを実行してください。
なお、「CMakeLists.txt」ではないので、そちらは削除しないよう注意してください。

一応、MySQLのソースコードのtarballには入ってなかったみたいですが、何らかの操作でキャッシュが残っているのかもしれません。

 単純なcmakeプロジェクトを作って、確認

とりあえず適当なディレクトリを作って、そこに簡単なcmakeプロジェクトを作ってcmakeを実行してみてください。

mkdir hoge && cd hoge
echo 'cmake_minimum_required(VERSION 3.0)' > CMakeLists.txt
cmake .

これで同じエラーが発生すればcmakeが怪しい、エラーが発生しなければMySQLのほうが怪しい、と疑えます。(断定は禁物ですがね)

 Modules/CMake.cmakeの確認

「/usr/local/share/cmake-3.3」ディレクトリ以下にcmakeの各種ファイルが存在するか、確認してください。
特に、先のエラーメッセージは、「Modules/CMake.cmake」がないと発生するエラーのようです。

ちなみに、自分がcmake-3.3.1をビルドして仮インストールしてみた結果、「/usr/local/share/cmake-3.3」以下には、以下のようなディレクトリがありました。

Help
Modules
Templates
completions
editors
include

 porgでインストール状態を確認

自分はporgというソフトは知らなかったのですが、参考にされているQiitaの投稿者の方が、別の投稿で説明されていました。

これによると、「porg -f cmake」でインストールしたファイルが確認できるそうなので、どこにインストールされたか、インストールされたファイルがちゃんと存在するか、確認してみてください。


あと、あまり解決には結びつかないとは思いますが、情報としてOS(linuxだと思うけど、もしそうであればディストリビューション名とバージョンなど)も明記した方がいいと思います。
(どこで問題のヒントが得られるか、わかりませんし)


 コメントに対する追記

キャッシュクリアでcmakeが動いたようで、問題の原因はキャッシュにあったようですね。

CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.

If you are inside a firewall, you may need to use an http proxy:

export http_proxy=http://example.com:80

boostとは、C++のライブラリです。

「『-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>』をつける事により、ダウンロードすることができる。
このCMakeスクリプトは、<directory>の中のboostを探す。もしそこになければ、(そのディレクトリに)ダウンロードして展開する。
もしあなたがファイヤウォール内にいるのであれば、(以下のように)HTTPプロキシを使う必要があるだろう。」
と言っています。多分。(英語は苦手なんで)

なので、cmakeの引数に「-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>」を追加して、実行してください。
(「<directory>」は、とりあえず適当なディレクトリを指定してください。)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/12 16:25

    katsukoさま 引き続きコメントを頂戴し有難う御座います。
    1.キャッシュのクリア
     CMakeCache.txtを削除し再度cmakeを実行:
    #cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled
    -- Running cmake version 3.3.1
    -- Could NOT find Git (missing: GIT_EXECUTABLE)
    -- Configuring with MAX_INDEXES = 64U
    -- SIZEOF_VOIDP 8
    -- MySQL 5.7.13
    -- Packaging as: mysql-5.7.13-Linux-x86_64
    -- Looked for boost/version.hpp in and
    -- BOOST_INCLUDE_DIR BOOST_INCLUDE_DIR-NOTFOUND
    -- LOCAL_BOOST_DIR
    -- LOCAL_BOOST_ZIP
    -- Could not find (the correct version of) boost.
    -- MySQL currently requires boost_1_59_0

    CMake Error at cmake/boost.cmake:81 (MESSAGE):
    You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

    This CMake script will look for boost in <directory>. If it is not there,
    it will download and unpack it (in that directory) for you.

    If you are inside a firewall, you may need to use an http proxy:

    export http_proxy=http://example.com:80

    Call Stack (most recent call first):
    cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
    CMakeLists.txt:451 (INCLUDE)

    -- Configuring incomplete, errors occurred!
    See also "/usr/local/src/mysql-5.7.13/CMakeFiles/CMakeOutput.log".
    ※CMakeOutput.logは、○○ディレクトリに入ります。・・・から出ます。
     などの記載された800行以上のログです。
    ーーーーーーーーーーーーーー
    2.単純なcmakeプロジェクトを作って確認
    cmakeは成功しているようです。
    # echo 'cmake_minimum_required(VERSION 3.0)' > CMakeLists.txt
    [root@Z0000155707 hoge]# cmake .
    -- The C compiler identification is GNU 4.4.7
    -- The CXX compiler identification is GNU 4.4.7
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /usr/local/src/mysql-5.7.13/hoge
    [root@Z0000155707 hoge]# ls
    CMakeCache.txt CMakeFiles CMakeLists.txt Makefile cmake_install.cmake
    ーーーーーーーーーーーーーー
    3.Modules/CMake.cmakeの確認
     貴殿と同じディレクトリ構成です。
    ーーーーーーーーーーーーーー
    4. porgでインストール状態を確認
    #porg -f cmake
    /usr/local/src/cmake-3.3.1/
    の下のファイル及び、ディレクトリの下のファイルがズラズラと表示されました。
    以上です。
    ■ご指摘有難う御座います。 使用環境は CentOS6.7(64bit) です。(質問冒頭に追記しました)

    キャンセル

  • 2016/07/15 16:00

    katsukoさま コメントを追記頂きまして有難う御座います。回答遅れましてすみません。
    できました!
    download_boostというディレクトリを作り、cmakeを再実行してみました。
    # cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=download_boost
    -- Running cmake version 3.3.1
    -- Could NOT find Git (missing: GIT_EXECUTABLE)
    -- Configuring with MAX_INDEXES = 64U
    -- SIZEOF_VOIDP 8
    -- MySQL 5.7.13
    -- Packaging as: mysql-5.7.13-Linux-x86_64
    -- Downloading boost_1_59_0.tar.gz to /usr/local/src/mysql-5.7.13/download_boost
    -- Download failed, error: 7;"Couldn't connect to server"
    CMake Error at cmake/boost.cmake:194 (MESSAGE):
    You can try downloading
    http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
    manually using curl/wget or a similar tool
    途中でアボートし、マニュアルでやれ。ということなので、boost_1_59_0.tar.gz をwgetしてみました。
    2016-07-13 10:01:10 (79.1 MB/s) - `boost_1_59_0.tar.gz' へ保存完了 [639/639]
    しかし、実体の79.1 MBに対して、639byteしかダウンロードできず、その間、会社の業務に追われていました(空き時間で、業務用の新DBを作ろうとしています。)
    でも、今日再実行してみたら、今度はなぜかダウンロードでき、解凍もtarコマンドで実行したので、最初のcmakeコマンド(ダウンロードオプションのないやつ)のままで実行したら最後まで行った様子です。現在、mysqlのmakeをかけているところです。
    助かりました。本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる