
Ich habe ein seltsames Problem mit einem Ubuntu 12.04-Server:
hithwen@ip:~$ cmake --version
cmake version 2.8.12.2
buildbot@ip:~$ cmake --version
cmake version 2.8.7
Verschiedene Benutzer führen also unterschiedliche Versionen aus. Ok, sehen wir mal, wo sie sich befinden:
hithwen@ip:~$ which cmake
/usr/local/bin/cmake
buildbot@ip:~$ which cmake
/usr/bin/cmake
Also scheint es, als müsste ich den Pfad des Buildbot-Benutzers korrigieren, aber:
buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/local/bin
ist schon vorher /usr/bin
, wie kann ich das lösen?
Ich kann das cmake
Paket nicht deinstallieren, da andere Pakete davon abhängen, und ich kann es nicht über Repositories aktualisieren, da die letzte Version in den 12.04-Repos nicht verfügbar ist.
Antwort1
Die Erklärung lieferte der folgende hash
Befehl:
Der Hash-Befehl verwaltet eine Hash-Tabelle, die die Pfadnamen der verwendeten Befehle enthält. Wenn Sie einen Befehl ausführen, sucht er in der Variable $PATH nach einem Befehl. Wenn der Befehl jedoch in der Hash-Tabelle verfügbar ist, greift er dort zu und führt ihn aus.
Sie können einen bestimmten Befehl aus einer Hash-Tabelle mit der Option -d löschen.
So tat ich:
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
Warum wird es nicht gefunden /usr/local/bin/cmake
?
$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied
Dieser Benutzer hatte also keine Berechtigung, auf diese Datei zuzugreifen.
Ich habe es neu installiert cmake
und das hat das Problem behoben.