sudo 환경: "g++: 명령을 찾을 수 없습니다"

sudo 환경: "g++: 명령을 찾을 수 없습니다"

소스 GCCC 4.9에서 설치한 비교적 새로운 RHEL 6.5를 설치했습니다. GCC 4.9를 설치한 후 다음을 통해 배포판에서 제공되는 이전 GCC 버전을 제거했습니다.

sudo yum remove gcc

GCC나타납니다을(를) 올바르게 설치하고 사용자와 모두에게 볼 수 있도록 하려고 하는데 컴파일러가 필요한 명령 root을 실행하려고 하면 sudo찾을 수 없습니다.

내가 보기에는 을 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~ 아니다에서 :sudoPATH

[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]$ 

관련 정보