У меня странная проблема с сервером 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.
Объяснение было дано эти hash
команда:
команда хеша поддерживает хеш-таблицу, которая имеет используемые command’s пути. При выполнении команды она ищет команду в переменном $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
, и это зафиксировало его.