私は比較的新しい RHEL 6.5 をインストールしており、そこにソースから GCCC 4.9 をインストールしました。GCC 4.9 をインストールした後、ディストリビューションが提供する古い GCC バージョンを次の方法でアンインストールしました。
sudo yum remove gcc
湾岸協力会議登場正しくインストールされ、ユーザーと の両方に表示されるはずroot
ですが、コンパイラを必要とするコマンドを発行しようとするとsudo
、コンパイラが見つかりません。
はduringPATH
を指していないように思われますが、その理由がわかりません。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]$