The*_*end 15 ruby rubygems chef-infra vagrant rbenv
我正在建立一个流浪汉设置,其中一部分是安装rbenv.我正在使用图书管理员厨师管理我所有的厨师烹饪书,并安装了rbenv和ruby-build.
但是,当我尝试ssh到我的Vagrant虚拟机和类型时,ruby -v我得到了标准的系统安装ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux].考虑到可能没有安装rbenv,我尝试运行rbenv versions,但事实上安装了rbenv:
vagrant@precise64:~$ rbenv versions
* system (set by /opt/rbenv/version)
Run Code Online (Sandbox Code Playgroud)
那么我试过rbenv install [version]:
vagrant@precise64:~$ rbenv install 1.9.3-p327
[...]
BUILD FAILED
[...]
test -z "/opt/rbenv/versions/1.9.3-p327/include" || /bin/mkdir -p "/opt/rbenv/versions/1.9.3-p327/include"
/bin/mkdir: cannot create directory `/opt/rbenv/versions/1.9.3-p327': Permission denied
Run Code Online (Sandbox Code Playgroud)
失败了Permission denied.我尝试再次安装sudo:
sudo rbenv install 1.9.3-p327
Run Code Online (Sandbox Code Playgroud)
这很有效.然后我rbenv versions再次尝试跑步:
vagrant@precise64:~$ rbenv versions
* system (set by /opt/rbenv/version)
Run Code Online (Sandbox Code Playgroud)
但它仍然说只system安装了ruby.但是,如果我运行它sudo:
vagrant@precise64:~$ sudo rbenv versions
* system (set by /home/vagrant/.rbenv/version)
1.9.3-p327
Run Code Online (Sandbox Code Playgroud)
rbenv versions现在显示1.9.3已安装.
因此似乎存在断开连接,因为rbenv和我的ruby版本现在安装在系统级别而不是用户级别.
我正在使用rbenv-cookbook.我想让rbenv与厨师一起设置,因为这样可以避免我在安装后手动设置它.
我遇到的另一个问题是看起来像红宝石控制的所有东西,例如gem,也遭受同样的脱节.
vagrant@precise64:~$ gem install bundler
Fetching: bundler-1.3.5.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory.
Run Code Online (Sandbox Code Playgroud)
Duk*_*uke 14
大约两年前,在github上发生了一个关于共享安装的讨论,它似乎回答了这个问题.
概要:sstephenson(rbenv作者)特别不喜欢鼓励系统范围的安装,因为它具有权限,写访问等复杂性.他认为增加强大的支持会使rbenv更复杂,而简单性是目标.
编辑
我已经遇到了fnichol的chef-rbenv食谱,如果你真的想安装一个系统范围的rbenv,它会提供一个正确的方法,你可以用Chef自动化它(我推荐刀独奏).
它安装它,/etc/profile.d/以便它将为所有用户运行,将适当的红宝石放入PATH.
use*_*951 14
应该在用户级别安装rbenv.
不幸的是,这意味着在运行时gem install,您可能会遇到您所看到的问题:
You don't have write permissions into the {...} directory
Run Code Online (Sandbox Code Playgroud)
您可以通过在~/.rbenv目录上设置正确的权限来解决此问题.
sudo chown -R yourusername ~/.rbenv
Run Code Online (Sandbox Code Playgroud)
在chown目录之后,您将能够在gem install没有的情况下运行sudo.
| 归档时间: |
|
| 查看次数: |
11220 次 |
| 最近记录: |