
Ubuntu 12.04 서버에 이상한 문제가 있습니다.
hithwen@ip:~$ cmake --version
cmake version 2.8.12.2
buildbot@ip:~$ cmake --version
cmake version 2.8.7
따라서 서로 다른 사용자가 서로 다른 버전을 실행하고 있습니다. 이제 이들이 어디에 있는지 살펴보겠습니다.
hithwen@ip:~$ which cmake
/usr/local/bin/cmake
buildbot@ip:~$ which cmake
/usr/bin/cmake
따라서 buildbot 사용자 경로를 수정해야 할 것 같지만 다음과 같습니다.
buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/local/bin
이미 이전입니다 /usr/bin
. 어떻게 해결할 수 있나요?
cmake
다른 패키지가 의존하기 때문에 패키지를 제거할 수 없으며 12.04 저장소에서 마지막 버전을 사용할 수 없기 때문에 저장소를 통해 업그레이드할 수 없습니다.
답변1
설명은 다음 명령으로 제공되었습니다 hash
.
hash 명령은 사용된 명령의 경로 이름이 있는 해시 테이블을 유지 관리합니다. 명령을 실행하면 $PATH 변수에서 명령을 검색합니다. 그러나 해시 테이블에서 명령을 사용할 수 있으면 거기에서 선택하여 실행합니다.
-d 옵션을 사용하여 해시 테이블에서 특정 명령을 삭제할 수 있습니다
그래서 나는 이렇게 했습니다:
buildbot@ip:~$ hash
hits command
3 /usr/bin/which
1 /usr/bin/vim
2 /usr/bin/cmake
buildbot@ip:~$ $ hash -d cmake
buildbot@ip:~$ hash
hits command
4 /usr/bin/which
1 /usr/bin/vim
buildbot@ip:~$ cmake --version
cmake version 2.8.7
buildbot@ip:~$ which cmake
/usr/bin/cmake
왜 찾지 못합니까 /usr/local/bin/cmake
?
$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied
따라서 이 사용자에게는 해당 파일에 액세스할 수 있는 권한이 없습니다.
다시 설치했더니 cmake
해결됐어요.