
Estou tendo um problema estranho com um servidor Ubuntu 12.04:
hithwen@ip:~$ cmake --version
cmake version 2.8.12.2
buildbot@ip:~$ cmake --version
cmake version 2.8.7
Então, usuários diferentes estão executando versões diferentes, ok, vamos ver onde eles estão localizados:
hithwen@ip:~$ which cmake
/usr/local/bin/cmake
buildbot@ip:~$ which cmake
/usr/bin/cmake
Parece que preciso corrigir o caminho do usuário do buildbot, mas:
buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/local/bin
já é antes /usr/bin
, como posso resolver isso?
Não consigo desinstalar o cmake
pacote porque outros pacotes dependem dele e não posso atualizá-lo por meio de repositórios porque a última versão não está disponível nos repositórios 12.04.
Responder1
A explicação foi dada pelo hash
comando:
O comando hash mantém uma tabela hash, que contém os nomes dos caminhos do comando usado. Quando você executa um comando, ele procura um comando na variável $PATH. Mas se o comando estiver disponível na tabela hash, ele pega a partir daí e o executa.
Você pode excluir um comando específico de uma tabela hash usando a opção -d
Então eu fiz:
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
Por que não está encontrando /usr/local/bin/cmake
?
$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied
Portanto, este usuário não tinha permissão para acessar esse arquivo.
Eu reinstalei cmake
e isso resolveu.