3

所以,我一直在使用错误的做法:

sudo gem update [user-defined-gem-command]

当更新我所有的宝石和 Ruby 相关的东西时。

虽然我知道这是可行的,但 RVM 和 Rubygems 的制造商确实不鼓励这样做。据说它与sudo gem update将所有 gem 安装到 Ruby 的系统版本有关。

有人可以解释这样做的后果吗?

我目前正在改用 RVM 来安装我的 Gems 和 Ruby 相关更新。有没有办法撤消我使用 sudo 安装造成的任何损坏?或者这是一个小问题?

4

3 回答 3

3

sudo如果您使用的是 RVM 或 rbenv,那么使用只是一个问题。如果您使用沼泽标准 Ruby,sudo则在大多数安装中都需要,因为您的非特权用户不拥有 Ruby 安装。

RVM 和 rbenv 建立在用户编译和拥有自己的 rubies 的概念之上——如果在这种情况下使用 sudo,就会破坏模型;root 将编译、安装和拥有 Ruby 和 gems。(并且,根据您的环境,gem 可能安装在系统 Ruby 中,而不是您在 rbenv/RVM 中定义的那个)。

于 2013-10-11T15:47:26.700 回答
0

你可以去和sudo gem uninstall列出的所有宝石sudo gem list

我不认为这是必要的。所有可能的有害事物在安装过程中已经出现(您正在以 root 权限执行)。

继续使用 rvm、rbenv、chruby 或任何你想要的虚拟 ruby​​ 环境管理器。

于 2013-10-11T15:42:58.410 回答
0

如果您使用,则不会损坏sudo gem install- 它只是浪费空间,您可以使用sudo gem uninstall它来取回它。

对于任何 ruby​​ 版本管理器,当您使用sudo gemassudo并重置您的环境变量时可能会变得危险*,这有效地禁用了您尝试使用的 ruby​​ 环境切换器并让您回到您的系统 ruby​​。

'* 在极少数情况下,您可以将您的配置sudo为保留环境(糟糕的安全实践)或拥有一些额外的环境(复杂的维护)。

于 2013-10-12T01:21:29.770 回答