【问题标题】:gem executables will not rungem 可执行文件不会运行
【发布时间】:2019-06-02 01:24:42
【问题描述】:

即使我的机器上安装了 ruby​​ version2.3.0,从 shell 脚本运行 gem install 也会出错。

我正在尝试从 sh 文件安装 gem。 sh文件代码如下:

    cat > /tmp/install_bandshell.sh <<EOF
    #!/bin/sh -e
    cd /tmp
    git clone git://github.com/concerto/bandshell.git
    cd bandshell
    gem build bandshell.gemspec
    gem install *.gem
    cd /
    rm -rf /tmp/bandshell
    EOF
    chmod +x /tmp/install_bandshell.sh
    /tmp/install_bandshell.sh

但是当我运行这个 sh 文件时出现错误警告:你的 PATH 中没有 /root/.gem/ruby/1.9.1/bin,gem 可执行文件将无法运行。错误:安装 bandshell-1.7.2.gem 时出错:机架需要 Ruby 版本 >= 2.2.2。

即使我安装了 2.3.0 gem env 输出

    RubyGems Environment:
      - RUBYGEMS VERSION: 2.5.1
      - RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
      - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.3.0/gems/
      - USER INSTALLATION DIRECTORY: /root/.gem/ruby/2.3.0
      - RUBY EXECUTABLE: /usr/local/bin/ruby
      - EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.3.0/gems/bin
      - SPEC CACHE DIRECTORY: /root/.gem/specs
      - SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86_64-linux
      - GEM PATHS:
         - /usr/local/lib/ruby/gems/2.3.0/gems/
         - /root/.gem/ruby/2.3.0
         - /usr/local/lib/ruby/gems/2.3.0
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
         - https://rubygems.org/
      - SHELL PATH:
         - /usr/local/sbin
         - /usr/local/bin
         - /usr/sbin
         - /usr/bin
         - /sbin
         - /bin
         - /usr/local/lib/ruby/gems/2.3.0/gems

从终端,如果我安装这个 gem,它可以工作,但从 shell 脚本给出上述错误。请帮我解决一下这个。平台是 Debian Wheezy。

【问题讨论】:

  • 如果唯一的区别是 shell 与脚本,那么您的脚本是否正确?您的 ruby​​/gem 环境是否与 /bin/sh 或 /bin/bash、/bin/zsh 一起使用
  • 您能发布任何影响您的 PATH 的脚本/代码/配置文件吗?
  • 我认为@S.Spencer 是对的。您可能需要将 #!/bin/sh -e 更改为您使用的实际 shell。

标签: ruby linux shell rubygems


【解决方案1】:

我只是在回答您关于消息的主要问题。 (坦率地说,我不知道你的 sh 文件是怎么回事,所以我不会解决它引起的任何其他问题。)

该消息是对您的警告,gem 安装的任何可执行文件都不在您的路径中。如果 gem 没有安装 any 可执行文件,那么您可以放心地忽略该消息。如果它确实(或者您只是不确定),则相应地修改路径。你如何做到这一点取决于你碰巧使用的是什么外壳。既然你用'linux'标记了这个问题,我猜你正在使用bash;如果是这样,请在您的 ~/.profile~/.bash_profile 中添加类似于以下内容的条目:

PATH="$PATH:/root/.gem/ruby/1.9.1/bin"

现在,在这一点上,我不得不怀疑 - 你在使用 ruby​​-1.9 吗?你知道 ruby​​ 1.9 已经过时了,对吧?实际上,考虑到您似乎使用的是 Ruby 2.3.0,这不太可能。我的建议是(至少暂时)如上所述调整您的 PATH 以避免警告。我怀疑你仍然有问题,但是你可以在没有你引用的警告的情况下提出一个新问题。

最后一点,忽略建议您应该将 shebang 更改为“#!/bin/sh”以外的内容;这非常不太可能有帮助。

【讨论】:

  • 我安装了 ruby​​ 2.3.0,显示为 gem env 命令的输出。是的,操作系统是 linux,Debian Wheezy。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多