ruby - gem 可执行文件将不会运行

标签 ruby linux shell rubygems

即使我的机器上安装了 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 文件时出现错误警告:你的路径中没有/root/.gem/ruby/1.9.1/bin,gem 可执行文件将不会运行。错误:安装 bandshell-1.7.2.gem 时出错:rack 需要 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。

最佳答案

我只是回答您关于消息的主要问题。 (坦率地说,我不知道你的 sh 文件发生了什么,所以我不会解决它导致的任何其他问题。)

该消息警告您 gem 安装的任何可执行文件都不在您的路径中。如果 gem 没有安装任何 可执行文件,那么您可以安全地忽略该消息。如果它确实(或者您只是不确定),则相应地修改路径。你如何做到这一点取决于你碰巧使用的是什么 shell 。由于您已将问题标记为“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 - gem 可执行文件将不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073387/

相关文章:

python - 从命令行在 Linux 上运行 Python GUI 程序需要哪些软件包

linux - 在哪里/如何在 *nix 命令行实用程序中保存首选项文件?

linux - 在没有 cron 和 at 命令的情况下安排脚本

regex - 如何仅删除所有以大写字母书写的单词(通过使用 sed 和/或 awk)

linux - 无法使用参数运行外部工具

java - LAMP中 'P'有什么意义?为什么是 PHP、Perl 或 Python?

ruby - 为什么全局状态不好?

ruby-on-rails - 在模型方法中使用 Rails 中的当前用户

ruby-on-rails - fixtures 会触发模型回调吗?

c - 内核模块系统调用覆盖