在Linux系统中编译安装MySQL 5.7时,可能会遇到一个错误提示:“Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)”,这个错误表明系统缺少Curses库,或者编译器找不到Curses库的位置,为了解决这个问题,我们需要先了解Curses库的作用和如何安装它。
Curses库简介
Curses库是一个用于创建基于文本的用户界面的库,它在Unix和类Unix系统中广泛使用,允许开发者编写跨平台的控制台应用程序,Curses库提供了一组函数,用于处理光标移动、字符输入、颜色和屏幕刷新等操作。
安装Curses库
在Linux系统中,可以使用包管理器来安装Curses库,以下是在不同Linux发行版中安装Curses库的方法:
CentOS/RHEL
在CentOS或RHEL系统中,可以使用yum
命令来安装Curses库:
sudo yum install ncursesdevel
Ubuntu/Debian
在Ubuntu或Debian系统中,可以使用aptget
命令来安装Curses库:
sudo aptget install libncurses5dev libncursesw5dev
Fedora
在Fedora系统中,可以使用dnf
命令来安装Curses库:
sudo dnf install ncursesdevel
安装完成后,可以通过以下命令检查Curses库是否已经成功安装:
ldconfig p | grep curses
如果输出结果包含libcurses.so
和libcurses.so.5
等文件名,说明Curses库已经成功安装。
配置MySQL源码编译环境
安装完Curses库后,需要配置MySQL源码编译环境,以便编译器能够找到Curses库的位置,具体操作如下:
1、下载MySQL 5.7源码包并解压:
wget https://dev.mysql.com/get/Downloads/MySQL5.7/mysql5.7.32.tar.gz tar zxvf mysql5.7.32.tar.gz cd mysql5.7.32
2、创建一个名为my_config_file.cnf
的配置文件,并将以下内容写入该文件:
[client] port = 3306 [mysqld] port = 3306 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock symboliclinks = 0 charactersetserver = utf8mb4 collationserver = utf8mb4_general_ci init_connect='SET NAMES utf8mb4' character_set_client = utf8mb4 collation_client = utf8mb4_general_ci ssl = false
3、修改my_config_file.cnf
文件的权限:
chmod 644 my_config_file.cnf
4、在MySQL源码目录下执行配置脚本,指定配置文件和Curses库的位置:
cmake DBUILD_CONFIG=mysql_release DWITH_READLINE=ON DWITH_SSL=system DWITH_ZLIB=system DMYSQL_DATADIR=/var/lib/mysql DINSTALL_LAYOUT=FILESYSTEM DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock DDEFAULT_CHARSET=utf8mb4 DDEFAULT_COLLATION=utf8mb4_general_ci DMYSQL_USER=mysql DMYSQL_TCP_PORT=3306 DENABLED_LOCAL_INFILE=ON DWITH_EXTRA_CHARSETS=all DWITH_INNOBASE_STORAGE_ENGINE=1 DWITH_ARCHIVE_STORAGE_ENGINE=1 DWITH_BLACKHOLE_STORAGE_ENGINE=1 DWITH_FEDERATED_STORAGE_ENGINE=1 DWITH_PERFSCHEMA_STORAGE_ENGINE=1 DCURSES_LIBRARY=/usr/lib64/libcurses.so DCURSES_INCLUDE_PATH=/usr/include/ncurses.h DDOWNLOAD_BOOST=1 DDOWNLOAD_BOOST_DYN_LINK=1 DDOWNLOAD_OPENSSL=1 DDOWNLOAD_ZLIB=1 DMYSQL_CONFIG_SHELL=/bin/bash DCMAKE_BUILD_TYPE=Release DCMAKE_INSTALL_PREFIX=/usr/local/mysql DMYSQL_UNIX_ADDR=/tmp/mysqld.sock DSYSCONFDIR=/etc DMYSQL_USER=mysql DMYSQL_TEST_DIR=/usr/local/mysql/mysqltest DWITH_EDITRES=1 DMYSQL_TCP_PORT=3306 DCOMPILATION_COMMENT="Compiled on $(hostname) at $(date)" DMYSQL_HOMEBRIGDE=OFF DWITH_EMBEDDED_SERVER=OFF DENABLED_PROFiling=ON DENABLED_DEBUG_SYNC=ON DENABLED_DEBUG_INFO=ON DENABLED_STACKTRACE=ON DENABLED_SLOW_LOG=ON DENABLED_GENERATED_REGEXP=ON DENABLED_FT_BOOL=ON DENABLED_FT_FUZZY=ON DENABLED_FT_IDF=ON DENABLED_FT_MATCH=ON DENABLED_JSON=ON DENABLED_RPL_DEBUG=ON DENABLED_RPL_TRANSACTIONS=ON DENABLED_RPL_SEMICOLON=ON DENABLED_RPL_STATS=ON DENABLED_THREAD_CACHE=ON DENABLED_ZSQL_CACHE=ON DSYSTEMTESTTOP=../mysqltest DENABLED_PROFILING=ON DENABLED_PROXY_DEBUG=ON DENABLED_PROXY_PROFILE=ON DENABLED_PROXY_SIZE=ON DCURSES_LIBRARY=/usr/lib64/libcurses.so DCURSES_INCLUDE_PATH=/usr/include/ncurses.h DWITH_BOOST=/usr/local/boost DMYSQL_MAINTAINER_MODE=ON DCMAKE_VERBOSE=ON DCMAKE_BUILD_TYPE=RELEASE DCMAKE_INSTALL_PREFIX=/usr/local/mysql .
注意:请根据实际情况修改CMAKE
命令中的路径和选项,如果你的系统是32位的,将libcurses.so
的路径改为/usr/lib/libcurses.so
。
5、编译并安装MySQL:
make && make install
6、初始化MySQL数据目录:
cd /usr/local/mysql scripts/mysql_install_db datadir=/var/lib/mysql basedir=/usr/local/mysql defaultsfile=/etc/my.cnf user=mysql force
7、创建MySQL服务单元文件:
cp supportfiles/mysql.server /etc/init.d/mysql.server chmod +x /etc/init.d/mysql.server
8、启动MySQL服务:
service mysql.server start
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/674995.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复