在CygWin上安装ruby gems时出现TypeError

时间:2016-10-14 20:02:00

标签: ruby windows cygwin

我在ruby 2.2.5 / gem 2.3.0安装了CygWin,但在使用gem install时出现安装错误。

正如在某些地方所建议的那样,我也试过了gem update --system,但即使这样也无济于事。

如何解决此问题?

我附上了我运行的命令的输出:

$ gem install napa --backtrace
ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String
        /usr/local/share/ruby/site_ruby/rubygems/installer.rb:168:in `check_executable_overwrite'
        /usr/local/share/ruby/site_ruby/rubygems/installer.rb:409:in `block in generate_bin'
        /usr/local/share/ruby/site_ruby/rubygems/installer.rb:396:in `each'
        /usr/local/share/ruby/site_ruby/rubygems/installer.rb:396:in `generate_bin'
        /usr/local/share/ruby/site_ruby/rubygems/installer.rb:236:in `install'
        /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:156:in `block in install'
        /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:140:in `each'
        /usr/local/share/ruby/site_ruby/rubygems/request_set.rb:140:in `install'
        /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:249:in `install_gem'
        /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:291:in `block in install_gems'
        /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:287:in `each'
        /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:287:in `install_gems'
        /usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:202:in `execute'
        /usr/local/share/ruby/site_ruby/rubygems/command.rb:307:in `invoke_with_build_args'
        /usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:167:in `process_args'
        /usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:137:in `run'
        /usr/local/share/ruby/site_ruby/rubygems/gem_runner.rb:54:in `run'
        /usr/bin/gem:21:in `<main>'

$ gem update --system
Updating rubygems-update
ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String

1 个答案:

答案 0 :(得分:2)

跳到最底层以获得简短的回答,而不是加入我的旅程 所以今天我一直在研究这个问题,因为对于我来说,去年开展工作的工作今年没有成功。使用管理员权限时尝试所有步骤。我从其他线程做了一些有问题的命令,要求我将gem降级到6年前的东西,不要这样做我无法弄清楚如何恢复所以我删除了我的Cygwin安装并开始为此清新干净。 Windows 10是我的操作系统。

我使用cygwin的安装程序来安装当前版本的ruby,gem和sass。 (随着时间的推移,我很肯定这些数字会变得过时。)

  • ruby​​ 2.3.3p222(2016-11-21修订版56859)[x86_64-cygwin]
  • ruby​​-devel 2.3.3-1
  • gem 2.6.11
  • Sass 3.4.21 selective steve

旁注我倾向于在View下拉列表中使用'Category'并选择devel类别。我也让cygwin自动为我选择依赖项。

此时我遇到了同样的错误。看着输出提供的日志,我决定尝试一些在那里被破坏的命令,如'gcc',这是没有的。再次加载cygwin安装程序,安装 gcc版本5.4.0 (包名为gcc-core:GNU编译器集合(C,OpenMP))

试图再次运行'gem install compass',另一个错误,它找不到'make'。 再次预热安装程序并找到'make:'make'实用程序的GNU版本(4.2.1-2)

再次运行compass install命令并检查日志:'libffi'看起来不像那里。在我们的cygwin安装程序中说libs类别下我已经有了libffi6 v2.2.1-2。我要给libffi-devel打一针,因为我迫切希望安装罗盘。

这很有效!导航到您的目录并运行命令'compass watch'我非常兴奋。在命令行中运行'compass -v'向我们显示版本1.0.3

简答: 使用Cygwin安装程序安装以下软件包

  • ruby​​:解释面向对象的脚本语言
  • ruby​​-devel:解释面向对象的脚本语言
  • ruby​​-gems:Ruby模块管理系统
  • ruby​​-sass:Ruby css编译器扩展
  • make:make实用程序的GNU版本
  • gcc-core:GNU编译器集合(c,OpenMP)
  • libffi-devel:便携式外部函数接口libary

然后以管理员身份运行cygwin并输入命令'gem install compass'。