使用“sudo gem update”的长期后果是什么?

时间:2013-10-11 15:20:38

标签: ruby rubygems rvm

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

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

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

虽然我知道这是有效的,但是RVM和Rubygems的制造商真的不鼓励这样做。它应该与sudo gem update安装所有宝石到系统版本的Ruby有关。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以sudo gem uninstall列出sudo gem list中列出的所有宝石。

我不认为这是必要的。安装过程中会出现所有可能有害的东西(使用root权限执行)。

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

答案 2 :(得分:0)

如果您使用sudo gem install,则没有损坏 - 只是浪费空间,您可以使用sudo gem uninstall将其取回。

对于任何ruby版本管理器,使用sudo gem时可能会有危险,因为sudo会重置您的环境变量*,这会有效地禁用您尝试使用的ruby环境切换器并让您返回到系统红宝石。

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