【问题标题】:Gem install wrong number of arguments (given 4, expected 1)Gem 安装错误数量的参数(给定 4,预期 1)
【发布时间】:2021-10-24 05:04:59
【问题描述】:

当我运行 bundle 时,我得到以下信息:

-bash: bundle: command not found

我不是 ruby​​ 开发人员,但似乎我需要 bundler 来让一些软件运行其他人编写的。所以我尝试使用gem install bundler 获取捆绑程序,但出现以下错误:

ERROR:  While executing gem ... (ArgumentError)
    wrong number of arguments (given 4, expected 1)

使用--backtrace

ERROR:  While executing gem ... (ArgumentError)
    wrong number of arguments (given 4, expected 1)
        /var/lib/gems/2.5.0/gems/psych-4.0.1/lib/psych.rb:323:in `safe_load'
        /usr/lib/ruby/2.5.0/rubygems/safe_yaml.rb:31:in `safe_load'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:496:in `block (2 levels) in read_checksums'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:495:in `wrap'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:495:in `block in read_checksums'
        /usr/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:116:in `seek'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:494:in `read_checksums'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:547:in `block (2 levels) in verify'
        /usr/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:29:in `new'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:546:in `block in verify'
        /usr/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `open'
        /usr/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `with_read_io'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:545:in `verify'
        /usr/lib/ruby/2.5.0/rubygems/package.rb:526:in `spec'
        /usr/lib/ruby/2.5.0/rubygems/source/local.rb:49:in `block in load_specs'
        /usr/lib/ruby/2.5.0/rubygems/source/local.rb:43:in `each'
        /usr/lib/ruby/2.5.0/rubygems/source/local.rb:43:in `load_specs'
        /usr/lib/ruby/2.5.0/rubygems/source/local.rb:83:in `find_gem'
        /usr/lib/ruby/2.5.0/rubygems/resolver/installer_set.rb:141:in `find_all'
        /usr/lib/ruby/2.5.0/rubygems/resolver/installer_set.rb:56:in `add_always_install'
        /usr/lib/ruby/2.5.0/rubygems/dependency_installer.rb:478:in `resolve_dependencies'
        /usr/lib/ruby/2.5.0/rubygems/commands/install_command.rb:194:in `install_gem'
        /usr/lib/ruby/2.5.0/rubygems/commands/install_command.rb:255:in `block in install_gems'
        /usr/lib/ruby/2.5.0/rubygems/commands/install_command.rb:251:in `each'
        /usr/lib/ruby/2.5.0/rubygems/commands/install_command.rb:251:in `install_gems'
        /usr/lib/ruby/2.5.0/rubygems/commands/install_command.rb:158:in `execute'
        /usr/lib/ruby/2.5.0/rubygems/command.rb:313:in `invoke_with_build_args'
        /usr/lib/ruby/2.5.0/rubygems/command_manager.rb:173:in `process_args'
        /usr/lib/ruby/2.5.0/rubygems/command_manager.rb:143:in `run'
        /usr/lib/ruby/2.5.0/rubygems/gem_runner.rb:59:in `run'
        /usr/bin/gem:21:in `<main>'
  • 红宝石版本: ruby 2.5.5p157 (2019-03-15 revision 67260) [arm-linux-gnueabihf]
  • 宝石版本: 2.7.6.2
  • 我使用的是 raspbian linux。

【问题讨论】:

  • 不确定 rvmrbenv 之类的东西是否适用于 Rapberry PI,但如果可以,请尝试通过其中之一安装 ruby​​,而不是使用系统 ruby​​
  • 看起来您可能存在 Psych 和 Ruby 之间的版本不兼容问题,如果您的 Gemfile 中有一行与 Psych 相关,请尝试将其删除,因为它应该与 Ruby 一起提供。

标签: ruby rubygems bundler


【解决方案1】:

Psych Gem 是我的罪魁祸首;在运行任何捆绑程序/gem 命令之前卸载 psych 为我修复了它:

之前:

$ bundle update rails
[SNIP]
ArgumentError: wrong number of arguments (given 4, expected 1)
An error occurred while installing activesupport (6.0.4.1), and Bundler cannot continue.
Make sure that `gem install activesupport -v '6.0.4.1' --source 'https://rubygems.org/'` succeeds before bundling.


$ gem install activesupport -v '6.0.4.1' --source 'https://rubygems.org/' --backtrace
ERROR:  While executing gem ... (ArgumentError)
    wrong number of arguments (given 4, expected 1)
        /home/local/PDC01/swi/.asdf/installs/ruby/2.5.3/lib/ruby/gems/2.5.0/gems/psych-4.0.1/lib/psych.rb:323:in `safe_load'
        /home/local/PDC01/swi/.asdf/installs/ruby/2.5.3/lib/ruby/2.5.0/rubygems/safe_yaml.rb:31:in `safe_load'
[SNIP]

修复:

$ gem uninstall psych

Select gem to uninstall:
 1. psych-3.3.0
 2. psych-4.0.1
 3. All versions
> 3

之后:

...

$ gem install activesupport -v '6.0.4.1' --source 'https://rubygems.org/' 

Successfully installed activesupport-6.0.4.1
Parsing documentation for activesupport-6.0.4.1

【讨论】:

  • 我在安装了 psych v3 和 psych v4 时遇到了同样的问题,我只需要卸载 psych v4 就可以正常工作。谢谢!
  • 如果您收到类似gem "psych" cannot be uninstalled because it is a default gem 的消息,您还可以通过rm -rf vendor/bundle/ruby/2.5.0/gems/psych-4.0.3 删除gem 本身(将此路径更改为安装到系统上的任何位置)
【解决方案2】:

运行 gem update --system 应该可以解决问题,因为最近的 RubyGems 版本应该与 Psych 3 和 Psych 4 兼容。

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2017-08-16
    • 2018-12-02
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多