即使我的机器上安装了 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/