使用rbenv不适用于sudo?

时间:2013-09-28 20:16:50

标签: ruby ubuntu rbenv

任何使用sudo的命令似乎都不适用于RBenv。

我正在尝试安装ActiveRecord,它说我没有写入权限,所以当我尝试这个时:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1 directory.

它说:

sudo: gem: command not found

我怎样才能解决这个问题?

4 个答案:

答案 0 :(得分:11)

rbenv和RVM等工具背后的想法是您不需要使用sudo,因为您的整个 Ruby环境作为沙箱存在于您自己的工作区内。

RVM允许多用户配置,尽管它最初是为单个用户设计的。

就我所见过或读过而言,rbenv仅为单用户。在使用rbenv时,您在任何时候都不需要使用sudo来操纵或更改您的Ruby环境。如果你这样做,那就错了。如果你试图使用sudo,你就会搞砸了。您可能不会立即发现,但最终会弹出一些内容,您需要将文件的所有权更改回给您。

在Linux和Mac OS上,您可以使用以下方法轻松完成:

sudo chown -R <your_user_name>:<your_group> ~/.rbenv

您必须将其作为sudo运行,因为只有超级用户才能更改root拥有的文件的所有权。 sudo升级您的权限以允许您更改这些内容。

答案 1 :(得分:3)

我意识到现在这种情况有点老了,但这可能会对未来的人有所帮助:

  

rbenv-sudo是rbenv的插件,允许您在sudo会话中运行rbenv提供的Rubies和Gems。

https://github.com/dcarley/rbenv-sudo

答案 2 :(得分:0)

我在“Installing Ruby 2.0 and Rails 4.0.0beta on AWS EC2”中的回答可能对您有用。

简而言之,root用户需要在其环境中加载rbenv,以便您使用rbenv安装的gem。这可以通过添加以下

来完成
# /etc/profile.d/rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="${RBENV_ROOT}/bin:$PATH"
eval "$(rbenv init -)"

这应该足以使sudo起作用。如果您正在编写shell脚本,则可能需要使用

. /etc/profile.d/rbenv.sh 

在使用其他宝石的可执行文件之前。

答案 3 :(得分:-1)

我的回答有点迟,但我对这个问题有简单的解决方案。使用符号链接可以使用binstub和其他Ruby东西。

ln -s ~/.rbenv/bin/rbenv /usr/local/bin/rbenv
ln -s ~/.rbenv/shims/* /usr/local/bin

我希望这有助于遇到同样问题的其他用户。