解决方案#1:使用APT和Symlinks
如果可以全面安装Ruby 2.0和Ruby Gems(适用于所有用户),我建议您使用此解决方案.如果要安装其他版本或将其与其他用户隔离 – 请参阅解决方案#2.
这是一个简单的Ansible手册,它将为您安装最新的Ruby 2.0和Ruby Gems:
Ubuntu 14.04(Trusty Tahr)
- name: Latest version of Ruby is installed apt: pkg={{ item }} state=latest with_items: - ruby2.0 - ruby2.0-dev - name: Symlink exists for Ruby 2.0 file: src=/usr/bin/ruby2.0 dest=/usr/local/bin/ruby state=link - name: Symlink exists for Ruby Gems 2.0 file: src=/usr/bin/gem2.0 dest=/usr/local/bin/gem state=link
Ubuntu 13.10(Saucy Salamander)
- name: Latest version of Ruby is installed apt: pkg={{ item }} state=latest with_items: - ruby2.0 - ruby2.0-dev - name: Making Ruby 2.0 the default one command: update-alternatives --set ruby /usr/bin/ruby2.0 - name: Making Gem 2.0 the default one command: update-alternatives --set gem /usr/bin/gem2.0
提供的剧本必须用sudo执行:是的,原因很明显.
解决方案#2:使用RVM
RVM正在安装ruby,它是当前用户的本地gem.因此导致多用户环境中的问题.在我的用例中,由于某些原因它无法正常工作.所以我建议尽可能的坚持第一个解决方案.虽然,如果你知道你正在做什么,并且了解这里的复杂情况,那么RVM解决方案.
我建议创建一个简单的shell脚本来安装当前版本的Ruby和Ruby Gems与RVM,然后在配置的机器上调用它.
这是Bash脚本:
#!/usr/bin/env bash # Checking if RVM is installed if ! [ -d "~/.rvm" ]; then echo "Installing RVM..." \curl -sSL https://get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc else echo "Updating RVM..." rvm get stable fi; echo -n "RVM version is: " rvm --version echo "Installing Ruby..." rvm install ruby echo "Making installed Ruby the default one..." rvm use ruby --default echo "Installing latest version of Ruby Gems..." rvm rubygems current
此脚本将安装RVM(或将其更新为最新的稳定版本,如果已经安装),它将安装最新的稳定版本的Ruby和Ruby Gems.
这里是将提供的脚本复制到配置机器并进行调用的手册:
- file: path=~/provision/ruby state=directory - copy: src=../../files/ruby/install.sh dest=~/provision/ruby/install.sh mode=775 - name: Latest Ruby is installed shell: /usr/bin/env bash ~/provision/ruby/install.sh
只需将您的脚本放在Ansible的手册附近并更新路径.
我希望它会帮助某人.