J'essaye de mettre à jour cmake sur mon ordinateur Linux. Voici la commande que j'ai utilisée.
Supprimez l'ancien cmake:
/usr/local/bin/cmake
Téléchargez et extrait cmake-3.13.3.tar.gz depuis https://cmake.org/download/
Puis dans le dossier cmake extrait:
bash: /usr/bin/cmake: No such file or directory
quand j'ai fait cmake --version il renvoie
./bootstrap make sudo make install
qui indique qu'aucun exécutable cmake n'existe dans / usr / bin . Cependant, quand j'exécute quel cmake il renvoie
sudo apt purge --auto-remove cmake
Et cela existe.
Comment ai-je la commande cmake pointez sur /usr/local/bin/cmake?
Mon $ PATH montre
/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / snap / bin code>
Edit: différent de l'autre question puisque je sais exactement où l'exécutable cmake est juste que --version et qui ont un effet différent.
3 Réponses :
Selon github / cmake readme :
./bootstrap --prefix=/usr \
--mandir=/share/man \
--docdir=/share/doc/cmake \
--sphinx-man \
--system-libs \
--qt-gui \
--parallel=$(/usr/bin/getconf _NPROCESSORS_ONLN)
Dans boostrap que l'on peut voir, que l'installation par défaut du préfixe cmake est, à partir de ici :
cmake_default_prefix="/usr/local"
Mais je n'irais pas simplement avec bootstrap --prefix = / usr . Comme j'utilise archlinux, j'irais avec ce qu'utilise Archlinux pour l'installation par défaut, depuis ici :
You may use the --prefix=<install_prefix> option to specify a custom installation directory for CMake.
Ça a l'air raisonnable. Je vois que vous utilisez apt-get comme gestionnaire de paquets, si c'est debian, vous pouvez télécharger les paquets source pour cmake depuis ici et trouvez la commande build quelque part là-bas.
Il s'avère que j'ai besoin de sortir du shell pour que l'effet se produise. Une fois que j'ai démarré un nouveau terminal shell cmake --version a fonctionné.
Dans bash, vous pouvez utiliser hash -r pour qu'il oublie tous les emplacements mémorisés des commandes précédemment exécutées.
La différence entre
quelsortie et l'exécution réelle de l'exécutable par son nom signifie quecmakedans votre cas est un alias . Voir par exemple cette question sur Unix et Linux: unix.stackexchange.com/questions/85249/... Vous devez supprimer cet alias pour que makecmakefasse référence à son emplacement réel. La question n'est pas spécifique àcmake, et donc il ne s'agit pas de programmation .Double possible de Comment vérifier si un programme existe à partir d'un script Bash? et Comment vérifier si une commande existe dans un script shell? Voir la discussion sur
whichpar rapport àcommande -v. Comment "hacher -r" et actualiser tous les shells? et Quand refaire les exécutables dans $ PATH avec bash?