Fedora 28 + RStudio 1.1.4环境下安装RMySQL编译报错求助
解决Fedora 28下RStudio安装RMySQL包的编译错误
我来帮你搞定这个在Fedora 28 + RStudio 1.1.4环境中安装RMySQL时遇到的编译问题,你碰到的两个错误(libcurl配置失败、my_bool类型未识别)都是Fedora系统与新版本MySQL/MariaDB兼容性的典型问题,咱们一步步来解决:
第一步:修复libcurl依赖问题
你遇到的curl包配置失败,是因为缺少libcurl的开发包(运行时包不包含编译所需的配置文件),执行以下命令安装完整依赖:
sudo dnf install libcurl-devel
安装完成后,在RStudio的控制台里验证配置是否正常:
system("pkg-config --libs libcurl")
如果输出类似-lcurl的路径信息,说明libcurl的配置已经能被R识别了。
第二步:解决my_bool类型未识别的编译错误
这个错误的核心原因是:Fedora 28默认的MariaDB/MySQL版本(10.2+)已经将my_bool类型替换为标准bool,但旧版本的RMySQL源码仍在使用my_bool。你可以选择以下三种方案:
方案A:修改RMySQL源码兼容新版本
- 先下载RMySQL源码包(会因错误中断,但源码会保留在本地):
install.packages("RMySQL", type="source", dependencies=TRUE)
- 找到源码存放路径(通常在你的R库目录下,比如
~/R/x86_64-redhat-linux-gnu-library/3.5/RMySQL/src,路径中的版本号根据你的R版本调整),打开connection.c文件:- 最简单的方法是在文件最开头添加一行兼容定义:
typedef bool my_bool; - 或者全局替换所有
my_bool为bool
- 最简单的方法是在文件最开头添加一行兼容定义:
- 回到RStudio,执行编译安装(跳过测试加载避免中断):
install.packages("RMySQL", type="source", INSTALL_opts="--no-test-load")
方案B:安装兼容的数据库开发包
Fedora提供了保留my_bool定义的MariaDB连接器开发包,执行以下命令安装:
sudo dnf install mariadb-connector-c-devel
安装完成后,重新运行RMySQL的安装命令:
install.packages("RMySQL", dependencies=TRUE)
方案C:使用替代包(推荐)
如果不想折腾源码修改,推荐使用RMariaDB包——它是RMySQL的官方替代,完全兼容新版本的MariaDB/MySQL,在Fedora上无需额外配置:
install.packages("RMariaDB", dependencies=TRUE)
它的使用方法和RMySQL几乎一致,迁移成本很低。
额外注意:清理系统自带的c-cran-rmysql
你之前安装的c-cran-rmysql是Fedora系统打包的旧版本,可能和你的RStudio环境冲突,建议先卸载:
sudo dnf remove c-cran-rmysql
内容的提问来源于stack exchange,提问作者Nizar.N
相关产品推荐
相关产品推荐

