所以,我一直在使用错误的做法:
sudo gem update [user-defined-gem-command]
更新我所有的宝石和Ruby相关的东西时。
虽然我知道这是有效的,但是RVM和Rubygems的制造商真的不鼓励这样做。它应该与sudo gem update
安装所有宝石到系统版本的Ruby有关。
有人可以解释这样做的后果吗?
我目前正在改用使用RVM来安装我的Gems和Ruby相关更新。有没有办法通过使用sudo安装来解除我创建的任何损坏?或者这是一个小问题?
答案 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
配置为保护环境(不良安全实践)或拥有一些额外环境(复杂维护)。