質問: 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 のような結果です。
回答: ちょっと長くなりそうなので、解決案ではありませんが回答欄にて返事を。 一応、以下の点を確認してください。 キャッシュのクリア ========== 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の投稿者の方が、別の投稿で説明されていました。 * linuxでソースからインストールしたソフトウェアを管理 これによると、「porg -f cmake」でインストールしたファイルが確認できるそうなので、どこにインストールされたか、インストールされたファイルがちゃんと存在するか、確認してみてください。 あと、あまり解決には結びつかないとは思いますが、情報としてOS(linuxだと思うけど、もしそうであればディストリビューション名とバージョンなど)も明記した方がいいと思います。 (どこで問題のヒントが得られるか、わかりませんし) コメントに対する追記 =========== キャッシュクリアでcmakeが動いたようで、問題の原因はキャッシュにあったようですね。 ``` CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST= This CMake script will look for boost in . 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=』をつける事により、ダウンロードすることができる。 このCMakeスクリプトは、の中のboostを探す。もしそこになければ、(そのディレクトリに)ダウンロードして展開する。 もしあなたがファイヤウォール内にいるのであれば、(以下のように)HTTPプロキシを使う必要があるだろう。」 と言っています。多分。(英語は苦手なんで) なので、cmakeの引数に「-DDOWNLOAD_BOOST=1 -DWITH_BOOST=」を追加して、実行してください。 (「」は、とりあえず適当なディレクトリを指定してください。)