sudo 環境: "g++: コマンドが見つかりません"

sudo 環境: "g++: コマンドが見つかりません"

RHEL 6.5を比較的新しくインストールし、ソースからGCCC 4.9をインストールしました。 GCC 4.9をインストールした後、次の方法でディストリビューションで提供されている古いGCCバージョンを削除しました。

sudo yum remove gcc

湾岸協力協議会現れる正しくインストールされ、ユーザーとユーザーに表示されますが、コンパイラが必要なコマンドをroot実行しようとするとsudo見つかりません。

これがwhileをPATH指していないようですが、その理由を理解できません。g++sudo

g++次の場所にインストールされました:

[john@haley boost_1_55_0]$ which g++
/usr/local/bin/g++

成功すると、ユーザーとしてバージョンを取得しますroot

[john@haley boost_1_55_0]$ g++ --version
g++ (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[john@haley boost_1_55_0]$ sudo su -
root@haley /root # g++ --version
g++ (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

しかしsudo g++ --version失敗しました:

john@haley boost_1_55_0]$ sudo g++ --version
[sudo] password for john: 
sudo: g++: command not found
[john@haley boost_1_55_0]$ 

確認PATH事項sudo:

[john@haley boost_1_55_0]$ sudo echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/home/john/bin:/usr/local/bin
                                                                             ^^^^^^^^^

g++...場所が実際にパスにあることを示すようです。

なぜ失敗し、この問題を解決するにはどうすればよいですか?

コメントの質問に答えてください。

はい、次の明示的なパスを使用して実行できますsudo

[john@haley boost_1_55_0]$ sudo /usr/local/bin/g++ --version
[sudo] password for john: 
g++ (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[john@haley boost_1_55_0]$ 

確認してみると、私が何か間違っていたことがわかりましたsudo PATH。正しい方法で行うと、/usr/local/bin実際にいいえsudo私はここにいますPATH

[john@haley boost_1_55_0]$ sudo env | grep PATH
13:PATH=/sbin:/bin:/usr/sbin:/usr/bin
[john@haley boost_1_55_0]$ 

答え1

OPについてのコメントでこのソリューションを見つけましたが、それが私が望むものかどうかはわかりません。しなければならないする。

を含むようにsudo visudo実行して編集することでこれを行うことができます。secure_path/usr/local/bin

私のシステムでは、元の行は次のようになります。

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

次に変更してください。

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

「問題を解決する:

[john@haley boost_1_55_0]$ sudo g++ --version
g++ (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[john@haley boost_1_55_0]$ 

関連情報