
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
たら問題は解決しました。