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
quel
sortie et l'exécution réelle de l'exécutable par son nom signifie quecmake
dans 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 makecmake
fasse 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
which
par rapport àcommande -v
. Comment "hacher -r" et actualiser tous les shells? et Quand refaire les exécutables dans $ PATH avec bash?