Fedora 28安装Jekyll遇ArgumentError参数数量错误咨询
解决Fedora 28安装Jekyll时的ArgumentError参数数量错误
我在Fedora 28系统上安装Jekyll时碰到了这个参数不匹配的报错,已经装完官方文档要求的所有依赖项,当前环境版本信息如下:
ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] gem -v 2.5.2 bundle -v Bundler version 1.16.1
执行gem install jekyll时出现如下错误:
gem install jekyll ERROR: While executing gem ... (ArgumentError) wrong number of arguments (given 1, expected 0)
尝试以root身份运行也无法解决问题,添加--backtrace参数后的完整报错信息:
gem install jekyll --backtrace ERROR: While executing gem ... (ArgumentError) wrong number of arguments (given 1, expected 0) /usr/local/share/ruby/site_ruby/rubygems/core_ext/kernel_require.rb:47:in `require' /usr/local/share/ruby/site_ruby/rubygems/installer.rb:162:in `initialize' /usr/local/share/ruby/site_ruby/rubygems/installer.rb:104:in `new' /usr/local/share/ruby/site_ruby/rubygems/installer.rb:104:in `at' /usr/local/share/ruby/site_ruby/rubygems/resolver/specification.rb:93:in `install' /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:166:in `block in install' /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:156:in `each' /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:156:in `install' /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:250:in `install_gem' /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:300:in `block in install_gems' /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:296:in `each' /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:296:in `install_gems' /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:203:in `execute' /usr/local/share/ruby/site_ruby/rubygems/command.rb:308:in `invoke_with_build_args' /usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:169:in `process_args' /usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:139:in `run' /usr/local/share/ruby/site_ruby/rubygems/gem_runner.rb:55:in `run' /usr/bin/gem:21:in `<main>'
可行的解决思路
1. 升级Rubygems到兼容版本
这个报错大概率是因为Rubygems版本过旧,和Ruby 2.5.1存在兼容性问题。先尝试升级Rubygems:
gem update --system
升级完成后再重新执行gem install jekyll,如果还是不行,试试下面的方案。
2. 清理冲突的Ruby环境,重新安装系统组件
从报错路径看,/usr/local/share/ruby/site_ruby下的文件可能和系统自带的Ruby组件冲突了。先清理手动安装的Ruby文件,再重新安装系统包:
# 清理冲突的Ruby组件 sudo rm -rf /usr/local/share/ruby/site_ruby # 重新安装系统Ruby及相关工具 sudo dnf reinstall ruby ruby-devel rubygems bundler # 安装Jekyll编译所需的系统依赖 sudo dnf install gcc-c++ make redhat-rpm-config zlib-devel
之后用用户权限安装Jekyll,避免root权限带来的问题:
gem install jekyll --user-install
3. 使用Ruby版本管理器隔离环境(推荐)
系统自带的Ruby版本往往比较旧,且容易和其他组件冲突。用rbenv来管理独立的Ruby环境是更稳妥的方式:
# 安装rbenv和ruby-build sudo dnf install rbenv ruby-build # 配置bash环境,让rbenv生效 echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc # 安装一个兼容Jekyll的Ruby版本(比如2.7.8,Jekyll 4.x支持2.5+) rbenv install 2.7.8 # 设置全局Ruby版本 rbenv global 2.7.8 # 安装bundler和jekyll gem install bundler jekyll
这个报错的核心原因是Rubygems的Installer初始化时参数不匹配,通常是环境中存在冲突的Ruby组件,或者版本兼容性问题,上面的方案应该能解决你的问题。
内容的提问来源于stack exchange,提问作者akya
相关产品推荐
相关产品推荐

