Redmine启动失败:Ruby io-console.so加载错误及未定义符号问题求助
解决Redmine启动时的Ruby io-console兼容性错误
你遇到的问题核心是Ruby版本与io-console gem版本不兼容——错误里的undefined symbol: RB_INTEGER_TYPE_P是关键:这个符号是较新版本Ruby才引入的API,而你使用的Ruby 2.3.0版本太老,io-console 0.5.0已经不再支持它了。下面给你几个一步步的解决方案,按顺序尝试即可:
方案1:降级io-console到兼容Ruby 2.3.0的版本
这是最直接的修复方式,因为问题根源就是io-console版本过高:
- 先卸载当前不兼容的io-console版本:
执行时如果出现选择提示,直接选择卸载该版本即可。gem uninstall io-console -v 0.5.0 - 安装Ruby 2.3.0支持的旧版本io-console(比如0.4.6,这个版本经过验证可以兼容Ruby 2.3.x):
gem install io-console -v 0.4.6 - 完成后回到Redmine目录,先执行
bundle install确保所有依赖加载正常,再尝试启动Redmine服务。
方案2:降级Bundler版本(如果方案1无效)
你的Bundler版本是2.0.2,这个版本对Ruby 2.3.0的兼容性很差(Bundler 2.x系列官方要求Ruby 2.3.0以上,但实际在老版本Ruby上会出现依赖加载问题),建议降级到1.x系列:
- 卸载当前Bundler版本:
gem uninstall bundler -v 2.0.2 - 安装兼容Ruby 2.3.0的Bundler版本(比如1.17.3):
gem install bundler -v 1.17.3 - 回到Redmine目录,执行
bundle install重新安装所有依赖,之后再启动Redmine。
方案3:检查Redmine与Ruby版本的匹配性(如果前两个方案都失败)
如果以上方法都没解决问题,可能是你的Redmine版本和Ruby 2.3.0不匹配——比如Redmine 4.0及以上版本要求Ruby 2.4.0+,如果你的Redmine版本过高,就需要要么升级Ruby,要么降级Redmine到适配Ruby 2.3.0的版本(比如Redmine 3.4.x系列)。
内容的提问来源于stack exchange,提问作者Robin C




