소스 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
는~ 아니다에서 :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]$