7

任何使用的命令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

4 回答 4

12

像 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升级您的权限以允许您更改这些内容。

于 2013-09-29T03:33:05.200 回答
3

我意识到这现在有点过时了,但这可能会对将来的人们有所帮助:

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

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

于 2014-05-25T08:25:36.673 回答
0

我在“在 AWS EC2 上安装 Ruby 2.0 和 Rails 4.0.0beta ”中的回答可能对您有用。

简而言之,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 

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

于 2013-09-28T20:29:09.820 回答
-2

我的回答有点晚了,但我对这个问题有简单的解决方案。使用符号链接能够使用 binstubs 和其他 Ruby 东西。

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

我希望这对遇到相同问题的其他用户有所帮助。

于 2015-08-30T16:46:47.360 回答