CentOS服务器安装Fluentd遇Gem编译错误求助
问题分析
安装Fluentd时出现以下错误:
Building native extensions. This could take a while...
ERROR: Error installing fluentd:
ERROR: Failed to build gem native extension.current directory: /opt/rh/rh-ruby26/root/usr/local/share/gems/gems/msgpack-1.6.0/ext/msgpack/opt/rh/rh-ruby26/root/usr/bin/ruby -I /opt/rh/rh-ruby26/root/usr/share/rubygems -r ./siteconf20221204-2069-z0rswh.rb extconf.rb
mkmf.rb can't find header files for ruby at /opt/rh/rh-ruby26/root/usr/share/include/ruby.hYou might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.extconf failed, exit code 1
你尝试的xcode-select系列命令是MacOS专属,CentOS系统完全不适用,所以会提示command not found。另外,你使用的是Red Hat Software Collections(SCL)提供的rh-ruby26,而非系统默认Ruby,直接安装ruby-devel对应不上当前Ruby版本,导致安装失败。
解决方案
安装对应版本的Ruby开发包
针对rh-ruby26,需要安装其配套的开发包:sudo yum install rh-ruby26-ruby-devel启用SCL环境(如果未启用)
如果安装后仍有问题,先确保SCL的Ruby环境被激活:scl enable rh-ruby26 bash之后再执行Fluentd的安装命令:
gem install fluentd备选:使用官方推荐的Fluentd安装脚本
为避免依赖问题,推荐使用Fluentd官方提供的CentOS安装脚本:curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh此脚本会自动处理所有依赖,包括正确版本的Ruby及开发组件。
内容的提问来源于stack exchange,提问作者Dron445

