如何查找使用sudo gem install安装的所有Ruby gems?

3

我正在学习使用Ruby编程,在不了解更多信息的情况下,我使用sudo gem install name-of-gem安装了一些gem包,这些包现在正在与某些项目造成混乱。我已经阅读了gem文档,但没有找到一种方法来显示哪些gem是用sudo安装的。我该怎么找到它们呢?


2
sudo gem list,当然。 - undefined
@SergioTulentsev 如果我将 sudo gem listgem list 进行比较,我会发现很多宝石同时出现在这两个列表中。你的命令是列出了安装了和未安装 sudo 的所有宝石吗?如果要恢复混乱状态,应该如何操作?请将解决方案作为答案提供,以便我可以指派给你。谢谢! - undefined
which gemsudo which gem指向相同的二进制文件吗? - undefined
不对。我猜这意味着某些宝石有两个安装版本,一个是使用sudo安装的,另一个是没有使用sudo安装的,版本号相同。我应该只需执行一次带有所有宝石的巨大sudo gem uninstall命令,然后再执行一次带有所有宝石的巨大gem install命令,以便将它们重新安装到系统中吗?还是我应该先执行sudo gem uninstall all,然后只在每个项目中使用bundle来工作? - undefined
1
是的,在这种情况下,可以放心地从sudo gem list中删除所有的宝石(嗯,几乎全部。有一些系统宝石,比如bigdecimal,我甚至不确定你能否卸载),然后从那时起使用bundler。 - undefined
非常感谢@SergioTulentsev。你能否把你刚才在评论中说的话写成回答,这样我就可以将你的回答标记为有效,或者你更希望我编辑我的回答并给予你认可? - undefined
2个回答

2
如果您的系统带有内置的Ruby,则它(以及gems)位于受保护的文件夹中。要安装gems,您需要使用sudo
通常情况下,您应该保留系统自带的ruby,并使用其中一个ruby版本切换器(RVM、chruby/ruby-install、rbenv/ruby-build)安装更新版本。但是,在发现版本切换器之前,您可能已经使用sudo安装了一些gems到系统ruby中。
如果which gemsudo which gem返回不同的路径(这很可能意味着在sudo下您正在使用系统ruby而不是您的自定义版本),那么您可以安全地卸载所有使用sudo安装的gems。

1
你可以在电脑上查看历史记录以找到你使用的命令:
history | grep "sudo gem"

然后执行sudo gem uninstall name-of-gem来删除它们。

感谢Jad Joubran


这个解决方案有以下特点:1)依赖于操作系统;2)依赖于shell;3)需要启用历史记录且不能被随意修改;4)使用了“锤子”来拧螺丝。 - undefined
@mudasobwa 你如何解决这个问题并考虑到所有的注意事项? - undefined
如@SergioTulentsev在评论中指定的那样:“sudo gem list”。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接