WSL2 Ubuntu 20.04环境下执行gem install mysql安装失败求助
报错解决办法
问题核心原因
你遇到的两段报错分别对应两个问题:
- 第一段
checking for mysql_query() in -lmysqlclient... no是编译时找不到对应的MySQL客户端动态库 - 第二段
unknown type name ‘my_bool’等报错是因为你使用的Ruby 1.8.7、mysql 2.9.1 gem均为已停止维护的老旧版本,无法兼容当前WSL2默认源提供的MySQL 8.0+版本的客户端开发头文件,MySQL 8.0版本起已经移除了my_bool类型、ER_XPLUGIN_IP等旧常量
解决步骤
- 第一步:先卸载当前系统内的高版本MySQL相关开发包,避免版本冲突
sudo apt purge -y libmysqlclient-dev mysql-common sudo apt autoremove -y
- 第二步:添加MySQL 5.7版本的官方软件源,MySQL 5.7的客户端库完全兼容mysql 2.9.1 gem的编译要求
sudo apt install -y wget lsb-release gnupg wget -O - 'https://repo.mysql.com/RPM-GPG-KEY-mysql-2022' | sudo apt-key add - echo "deb http://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-5.7" | sudo tee /etc/apt/sources.list.d/mysql5.7.list sudo apt update
- 第三步:安装并锁定5.7版本的MySQL客户端开发包,防止后续被自动升级到不兼容的高版本
sudo apt install -y libmysqlclient-dev=5.7.* sudo apt-mark hold libmysqlclient-dev
- 第四步:重新编译安装mysql 2.9.1 gem,手动指定mysql_config路径避免找不到库的问题
gem install mysql -v '2.9.1' -- --with-mysql-config=/usr/bin/mysql_config
执行完成后无报错即代表安装成功。如果你的项目允许修改依赖,也可以将旧的mysql gem替换为兼容更高版本MySQL的mysql2 gem,无需降级客户端库即可完成安装。
内容的提问来源于stack exchange,提问作者hanan
相关产品推荐
相关产品推荐

