
Tengo un problema extraño con un servidor Ubuntu 12.04:
hithwen@ip:~$ cmake --version
cmake version 2.8.12.2
buildbot@ip:~$ cmake --version
cmake version 2.8.7
Entonces, diferentes usuarios están ejecutando diferentes versiones, bueno, veamos dónde están ubicadas:
hithwen@ip:~$ which cmake
/usr/local/bin/cmake
buildbot@ip:~$ which cmake
/usr/bin/cmake
Entonces parece que necesito arreglar la ruta del usuario de buildbot pero:
buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/local/bin
Ya es antes /usr/bin
, ¿cómo puedo solucionar esto?
No puedo desinstalar el cmake
paquete porque otros paquetes dependen de él y no puedo actualizarlo a través de repositorios porque la última versión no está disponible en los repositorios 12.04.
Respuesta1
La explicación la dio el hash
comando:
El comando hash mantiene una tabla hash, que tiene los nombres de ruta del comando utilizado. Cuando ejecuta un comando, busca un comando en la variable $PATH. Pero si el comando está disponible en la tabla hash, lo recoge desde allí y lo ejecuta.
Puede eliminar un comando particular de una tabla hash usando la opción -d
Así que lo hice:
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 qué no lo encuentra /usr/local/bin/cmake
?
$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied
Entonces este usuario no tenía permiso para acceder a ese archivo.
Lo reinstalé cmake
y eso lo solucionó.