【发布时间】:2014-04-02 16:21:21
【问题描述】:
我正在尝试使用 Ansible 在我的 VPS 上安装 Bundler。
我已经设置了 rbenv 并且全局 ruby 是 2.1.0。
如果我以 root 身份 SSH 进入服务器并运行 gem install bundler,它会完美安装。
我尝试了以下三种使用 Ansible 安装 Bundler gem 的方法,所有三种方法都没有产生错误,但是当我 SSH 进入并运行 gem list 时,找不到 Bundler。
尝试 1:
---
- name: Install Bundler
shell: gem install bundler
尝试 2:
---
- name: Install Bundler
shell: gem install bundler
尝试 3:
---
- name: Install Bundler
gem: name=bundler
state=latest
我也尝试过使用user_install=yes 和user_install=no 的最后一次尝试,但都没有任何区别。
任何想法如何让它通过 Ansible 正确安装 Bundler?
我已经为此工作了一段时间,我安装了 1 个 ruby 版本:2.1.0 并且发现 rbenv 的 shims 目录不包含 bundle 的 shim。
bundle 的垫片应该在里面吗?我只是对为什么 capistrano 找不到 bundle 命令感到困惑,因为它在我运行 sudo gem list 时列出,但在我运行 gem list 时却没有?
root@weepingangel:/usr/local/rbenv/shims# echo $PATH
/usr/local/rbenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@weepingangel:/usr/local/rbenv/shims# gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.0
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
- RUBY EXECUTABLE: /usr/local/rbenv/versions/2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rbenv/versions/2.1.0/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
- /root/.gem/ruby/2.1.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["http://gems.rubyforge.org", "http://gems.github.com"]
- "gem" => "--no-ri --no-rdoc"
- REMOTE SOURCES:
- http://gems.rubyforge.org
- http://gems.github.com
- SHELL PATH:
- /usr/local/rbenv/versions/2.1.0/bin
- /usr/local/rbenv/libexec
- /usr/local/rbenv/shims
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
有什么想法吗?
所以,我认为我有两个主要问题:
为什么只有在我运行
sudo gem list时才能看到捆绑程序?-
我的部署说:
INFO [18d5838c] Running /usr/bin/env bundle install --binstubs /var/rails_apps/neiltonge/shared/bin --path /var/rails_apps/neiltonge/shared/bundle --without development test --deployment --quiet on 188.226.159.96 DEBUG [18d5838c] Command: cd /var/rails_apps/neiltonge/releases/20140301205432 && ( PATH=$PATH /usr/bin/env bundle install --binstubs /var/rails_apps/neiltonge/shared/bin --path /var/rails_apps/neiltonge/shared/bundle --without development test --deployment --quiet ) DEBUG [18d5838c] /usr/bin/env: bundle: No such file or directory这是我的
$PATH:/usr/local/rbenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
为什么找不到bundle?
【问题讨论】:
-
是的,我发现运行
gem list不会显示 Bundler,但sudo gem list会显示!为什么会出现这种情况以及宝石应该在哪里让 Capistrano 能够使用它?
标签: ruby ubuntu rubygems bundler ansible