【发布时间】: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。