【问题标题】:jruby rubygems update breaks jgemjruby ruby​​gems 更新中断 jgem
【发布时间】:2010-02-23 20:09:43
【问题描述】:

有没有人看到这个:??没有jgem 命令完全有效??虽然jruby -S gem list 确实有效。我正在使用 jruby 1.3.1 和 Sun Java6 jre

root@test:/usr/local: jgem --version  
1.3.3  

root@test:/usr/local: jgem update --system  
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.6
/usr/local/jruby/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:103:Warning: Gem::SourceIndex#search support for String patterns is deprecated
Updating RubyGems to 1.3.6
Installing RubyGems 1.3.6
RubyGems 1.3.6 installed  

root@test:/usr/local: jgem list  
/usr/local/jruby/bin/jgem: line 8: require: command not found
/usr/local/jruby/bin/jgem: line 9: require: command not found
/usr/local/jruby/bin/jgem: line 10: require: command not found
/usr/local/jruby/bin/jgem: line 12: required_version: command not found
/usr/local/jruby/bin/jgem: line 14: unless: command not found
/usr/local/jruby/bin/jgem: line 15: abort: command not found
/usr/local/jruby/bin/jgem: line 16: end: command not found
/usr/local/jruby/bin/jgem: line 18: args: command not found
/usr/local/jruby/bin/jgem: line 20: begin: command not found
/usr/local/jruby/bin/jgem: line 21: Gem::GemRunner.new.run: command not found
/usr/local/jruby/bin/jgem: line 22: rescue: command not found
/usr/local/jruby/bin/jgem: line 23: exit: e.exit_code: numeric argument required

【问题讨论】:

    标签: rubygems jruby


    【解决方案1】:

    请注意,这似乎只发生在 Linux(不是 OSX)上,我通过替换 jgem 脚本顶部的行来修复它:

    #!/mnt/java/jruby-1.4.0/bin/jruby
    

    #!/usr/bin/env jruby
    

    【讨论】:

      【解决方案2】:

      有一个 shell 限制:无法在 shebang 行中使用 shell 脚本,并且由于 JRuby 的启动器是(曾经)基于 shell 的,这会破坏事情。好消息是 JRuby 现在有本机启动器(适用于 windows、linux、macos),使用它代替 shell 启动器可以毫无问题地将其放入 shebang 行中。

      【讨论】:

        【解决方案3】:

        鉴于 jgem 脚本中的第 8 行是 ruby​​ 的第一行(其余的是 cmets/blanks)我会说你的 shell 中的 (j)ruby 坏了。

        尝试启动一个新的 shell 会话,看看它是否只是暂时的。

        试试这些:

        jruby -v

        jirb

        等等……

        【讨论】:

        • brad@test:~$ jruby -v jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1.6.0_07) [i386- java] brad@test:~$ jirb irb(main):001:0> exit 两者都有效。此外,jruby 肯定可以工作,因为 jruby -S 语法可以正常工作,而不是 jgem
        • 呃,好吧,我显然无法格式化,但它表明这两个命令都有效。这是在linux上。我很犹豫是否要更新 OSX,因为我喜欢使用 jgem,而且我有 1.3.5,这就是我真正需要的
        • 检查这些文件,我注意到设置解释器的第一行是不同的。 1.3.6 有 #!/usr/local/jruby/bin/jruby 和 1.3.5 有 #!/usr/bin/env jruby 我想知道为什么有区别?显然 1.3.6 没有正确加载 ruby​​。我对 shell 脚本知之甚少,无法真正说出发生了什么。用 1.3.5 的 #!/usr/bin/env jruby 替换 1.3.6 的解释器行顺便说一句。
        • 试试 JRUby 1.4.0(我有)。如果你不想要,它不一定是永久的。您可以将 jgem 脚本从 1.4.0 复制到您想要运行的任何版本。
        • 是的,我实际上也在本地使用 jruby 1.4,在过渡升级中它可以工作。我只是在我们的暂存/生产服务器上使用 1.3.1 时才注意到这一点
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多