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
Sudo
なしで試してください。 Rubyのルートインストールを行った場合にのみSudo
を使用する必要がありますが、これはお勧めしません。
から 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を変更します-なぜですか? で提案されているように。
Sudo env PATH = $ PATH gem install Rails
わたしにはできる。
私のように誰かがこれに遭遇した場合、Sudoなしはオプションではありません。 'secure_path'についてsudoersを確認することをお勧めします。
これにインストール/ gem/Ruby(どのgem)のパスが含まれていない場合。次に、このエラーも発生します。
ソースから構築されたFedora23。