错误:sudo:gem:命令未找到。

12

我正在尝试在CentOS上安装rubyrep,在执行sudo gem install rubyrep时,出现错误sudo: gem: command not found。Sudo和gem都已经安装并且正常工作,只是在结合使用时出现问题。

我的设置:

[rubyrep]# which sudo
/usr/bin/sudo
[rubyrep]# which gem
/usr/local/rvm/rubies/ruby-2.1.2/bin/gem
[rubyrep]# which ruby
/usr/local/rvm/rubies/ruby-2.1.2/bin/ruby
[rubyrep]# $PATH
-bash: /usr/local/rvm/gems/ruby-2.1.2/bin:/usr/local/rvm/gems/ruby-2.1.2@global/bin:/usr/local/rvm/rubies/ruby-2.1.2/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin: No such file or directory

2
nicooga,不使用sudo就可以解决问题。如果您将其发布为答案,我就能够接受它。 - Kate
1
@nicooga ping. (15个字符) - Andrew Grimm
4个回答

22
尝试不使用sudo。只有在进行了根安装ruby的情况下才应使用sudo,但这并不被推荐。

8
http://web.archive.org/web/20130405074724/http://www.kleinfelter.com/node/188

网络上有数百份关于“sudo:gem:命令未找到”的报告。在我看过的十几个中,建议的解决方案是“确保'gem'在您的PATH中。”

是的。它在我的路径中。也就是说,以下内容可用:

gem --help

但以下内容失败:

sudo gem --help

更加混淆的是,gem被显示在以下路径中:

sudo echo $PATH

诀窍在于,在某些Linux版本中,sudo不使用$PATH作为其路径。这种行为被认为“更安全”。(请参见sudo changes PATH - why?)。

可恶!解决起来还是很麻烦的。你必须将'gem'放入路径中(而不仅仅是$PATH!)。你会读到一些可以传递给sudo的选项,当你自己输入命令行时,这是非常好的。当别人的脚本为你调用sudo时,你只能使用它使用的命令行。

我通过执行以下操作来解决它:

alias sudo='sudo env PATH=$PATH'

正如sudo更改了PATH路径-为什么?中建议的那样。


6

sudo env PATH=$PATH gem install rails

这对我来说有效。


2
如果像我一样遇到了这种情况,而没有使用sudo不是一个选项。你可能需要检查你的sudoers文件中的'secure_path'。
如果这个路径没有包括你的安装路径/ gem / ruby(即gem),那么你也会遇到这个错误。
Fedora 23,从源代码构建。

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