web-dev-qa-db-ja.com

エラーSudo:gem:コマンドが見つかりません

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
12
Kate

Sudoなしで試してください。 Rubyのルートインストールを行った場合にのみSudoを使用する必要がありますが、これはお勧めしません。

18
nicooga

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

「Sudo:gem:コマンドが見つかりません」については、ネット上に何百ものレポートがあります。私が調べた12ほどのうち、提案された解決策は「「gem」がPATHにあることを確認する」というものでした。

うん。それは私の道にあります。つまり、次のように機能します。

gem --help

しかし、以下は失敗します:

Sudo gem --help

さらに紛らわしいことに、gemは次のようなパスにあります。

Sudoエコー$ PATH

秘訣は、Linuxの一部のエディションでは、Sudoがパスに$ PATHを使用しないことです。この動作は「より安全」と見なされます。 ( SudoがPATHを変更する-なぜ? を参照してください)。

ああ!回避するのはまだ苦痛です。 'gem'をパスに入れる必要があります(単に$ PATHではありません!)Sudoに渡すことができるオプションについて説明します。これは、コマンドラインを自分で入力するときに問題ありません。誰かのスクリプトがSudoを呼び出すと、それが使用するコマンドラインでスタックします。

私はそれを次のようにして修正しました:

alias Sudo='Sudo env PATH=$PATH'

SudoはPATHを変更します-なぜですか? で提案されているように。

6
user4975679

Sudo env PATH = $ PATH gem install Rails

わたしにはできる。

1
scrapy

私のように誰かがこれに遭遇した場合、Sudoなしはオプションではありません。 'secure_path'についてsudoersを確認することをお勧めします。

これにインストール/ gem/Ruby(どのgem)のパスが含まれていない場合。次に、このエラーも発生します。

ソースから構築されたFedora23。

1
Dishcandanty