使用Ansible安装Bundler gem

左旋尼

我正在尝试使用Ansible在我的VPS上安装Bundler。

我已经设置了rbenv,全局红宝石是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和ahve发现rbenv的shims目录不包含shim bundle

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

有任何想法吗?

因此,我认为我有两个主要问题:

  1. 为什么捆扎机仅在我运行时可见sudo gem list

  2. 我的部署说:

    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
    

为什么找不到捆绑包?

白细胞

问题是,gem install bundler通过ansible运行时,由于rbenv init是在.bashrc或中运行,因此无法正确初始化rbenv .bash_profile因此,gem使用命令是系统命令,而不是作为rbenv填充程序安装的命令。因此,无论何时安装gem,它都将在系统范围内安装,而不是在rbenv环境中安装。

为了正确初始化rbenv,您必须执行bash本身并明确声明它是一个登录shell,因此它会读取它的初始化文件:

ansible your_host -m command -a 'bash -lc "gem install bundler"' -u your_rbenv_user 

-u your_rbenv_user如果您确实想以root用户身份执行此操作,请保留该部分。

如果上述命令有效,则可以轻松地将其转换为剧本操作:

- name: Install Bundler
  become_user: your_rbenv_user
  command: bash -lc "gem install bundler"

这很麻烦,但这是我到目前为止发现的唯一方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Ansible安装Bundler gem

来自分类Dev

Bundler:使用当前安装的gem进行初始化

来自分类Dev

Bundler找不到我可以使用gem install安装的gem

来自分类Dev

Bundler安装因Saltstack gem状态失败

来自分类Dev

是否可以使用Bundler安装gems并告诉它为特定的gem使用特定的编译器?

来自分类Dev

什么是gem install bundler?

来自分类Dev

Heroku分期环境。无法通过Bundler安装gem

来自分类Dev

无法使用rbenv安装gem

来自分类Dev

无法使用rbenv安装gem

来自分类Dev

Bundler无法安装gem:i18n gem v 0.6.10问题

来自分类Dev

当nix软件包管理器安装ruby时,如何使用ruby gem命令(如bundler)?

来自分类Dev

nokogiri gem安装问题

来自分类Dev

无法安装curl gem

来自分类Dev

无法安装Nokogiri gem

来自分类Dev

Ruby gem安装

来自分类Dev

Ruby gem安装问题

来自分类Dev

无法安装therubyracer gem

来自分类Dev

无法安装RMagic gem

来自分类Dev

无法gem安装nokogiri

来自分类Dev

无法安装therubyracer gem

来自分类Dev

Ruby gem安装

来自分类Dev

无法gem安装nokogiri

来自分类Dev

Ruby gem安装失败

来自分类Dev

使用预发布的gem来满足Bundler的传递依赖

来自分类Dev

Ruby / Gem / Bundler缓存我的本地gem文件

来自分类Dev

使用'gem pq'安装PostgreSQL gem失败,并出现错误:无法构建gem本机扩展

来自分类Dev

gem为什么不通过Ansible安装fpm?

来自分类Dev

使用rbenv安装Ruby到的gem

来自分类Dev

如何使用gem在Ubuntu上安装Rails