全新 CentOS 6.2 (Final) 系統,執行 `cmake` 配置 MySQL 5.5.25a 時噴出大量錯誤:
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".
CMAKE_MAKE_PROGRAM is not set.
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is: CMAKE_C_COMPILER_ENV_VAR
CMake Error: Could not find cmake module file: .../CMakeFiles/CMakeCCompiler.cmake
...
CMAKE_C_COMPILER not set, after EnableLanguage
CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
**`yum install cmake*` 僅安裝了 CMake 本身,缺少 `make` (GNU Make) 建構工具**。CMake 是建構系統**產生器**,它產生 `Makefile`,但**需要 `make` 實際執行編譯鏈接**。缺少 `make` 導致 CMake 無法偵測 C/C++ 編譯器環境,進而噴出連串「變數未設定」錯誤。
yum install make
# 輸出確認:
# Installing : 1:make-3.81-20.el6.i686
# Installed: make.i686 1:3.81-20.el6
yum groupinstall "Development Tools"
# 或精準安裝:
yum install gcc gcc-c++ autoconf automake libtool ncurses-devel libxml2-devel \
openssl-devel bison cmake make
which cmake make gcc g++
cmake --version
make --version
gcc --version
# 1. 建立 mysql 用戶
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
# 2. 解壓源碼
tar zxvf mysql-5.5.25a.tar.gz
cd mysql-5.5.25a
# 3. CMake 配置 (常用生產參數)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_DEBUG=0
# 4. 編譯安裝 (利用所有 CPU 核心加速)
make -j$(nproc)
make install
# 5. 後續初始化
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/data/mysql
chown -R mysql:mysql /data/mysql
chown -R root:root /usr/local/mysql
# 6. 配置啟動
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
| CMake 參數 | 用途 | 建議值 |
|---|---|---|
| CMAKE_INSTALL_PREFIX | 安裝根目錄 | /usr/local/mysql |
| MYSQL_DATADIR | 資料目錄 | /data/mysql (獨立分區) |
| MYSQL_UNIX_ADDR | Socket 檔路徑 | /data/mysql/mysql.sock |
| DEFAULT_CHARSET | 預設字元集 | utf8mb4 (支援 Emoji) |
| DEFAULT_COLLATION | 預設排序規則 | utf8mb4_unicode_ci |
| WITH_INNOBASE_STORAGE_ENGINE | 啟用 InnoDB | 1 (必須) |
| WITH_DEBUG | 除錯版本 | 0 (生產環境) |
| WITH_SSL | SSL 支援 | system / bundled |
| WITH_ZLIB | 壓縮支援 | system / bundled |
| 錯誤關鍵字 | 缺失套件 | 解決命令 |
|---|---|---|
| curses.h / ncurses | ncurses-devel | yum install ncurses-devel |
| openssl/ssl.h | openssl-devel | yum install openssl-devel |
| libxml2 | libxml2-devel | yum install libxml2-devel |
| bison: command not found | bison | yum install bison |
| CMAKE_C_COMPILER not found | gcc | yum install gcc gcc-c++ |
| CMAKE_MAKE_PROGRAM not found | make | yum install make |
補上 `make` 並安裝完整開發工具鏈後,MySQL 5.5 即可順利通過 CMake 配置、編譯安裝。此問題在 CentOS 6/7、RHEL 6/7 全新最小安裝環境中極高發,建議將 `make` 列入標準環境初始化清單。