J'ai installé Raspbian Jessie, livré avec le noeud v0.X, qui est la dernière version du noeud disponible sur les référentiels Raspbian. J'ai donc créé un script qui installe la v6.7.0:
#!/bin/bash
sudo apt-get remove nodejs node
if [ ! $(command -v node) ]; then
mkdir -p ~/tmp
pushd ~/tmp
if [ ! -d node-v6.7.0-linux-armv6l ]; then
if [ ! -f node-v6.7.0-linux-armv6l.tar.xz ]; then
wget https://nodejs.org/dist/v6.7.0/node-v6.7.0-linux-armv6l.tar.xz
fi
tar -xJf node-v6.7.0-linux-armv6l.tar.xz
fi
cp -R node-v6.7.0-linux-armv6l/* /usr/local/
popd
fi
Mais quand je cours, node -v
je reçois ceci:
-bash: / usr / bin / node: aucun fichier ni répertoire de ce type
Et quand je cours which node
je n’obtiens aucune sortie. - Et le script n'exécute jamais la if
branche, le nœud n'est pas téléchargé et rien n'est inséré /usr/local
.
Si j'ai désinstallé nodejs en utilisant aptitude, pourquoi cherche- /usr/bin/node
t- il toujours ?
J'ai vérifié la PATH
variable, elle a les deux /usr/local/bin
et /usr/local/sbin
.
Comment puis-je modifier le script pour qu'il fonctionne comme prévu?
Réponses:
Il peut y avoir un lien symbolique / usr / bin / node pointant sur un fichier manquant. Vérifiez avec
ls -alp /usr/bin/node
. Il peut y avoir un problème avec / etc / alternatives etc.Vous n'avez pas besoin de supprimer les paquetages installés avec apt pour installer une nouvelle version de Node.
Si vous souhaitez installer Node d’une manière qui fonctionne, consultez mon tutoriel à l’adresse:
qui explique incidemment comment installer correctement Node 6.7.0 - changez simplement la version pour celle dont vous avez besoin.
Au lieu d'utiliser le script que vous avez, cela peut échouer pour plusieurs raisons, par exemple lorsque vous avez node-v6.7.0-linux-armv6l dans / tmp, ou si vous avez déjà node-v6.7.0-linux-armv6l.tar. .xz dans / tmp, ou si vous avez un lien symbolique dans / usr / bin etc. faites-le manuellement comme je le décris dans le tutoriel pour les paquetages binaires. Changez simplement le nom du fichier avec la version dont vous avez besoin - par exemple, node-v6.7.0-linux-armv6l.tar.gz si vous voulez 6.7.0 pour ARM.
la source
ls -alp /usr/bin/node
comme tu l'as suggéré mais ça revientls: cannot access /usr/bin/node: No such file or directory
? J'ai aussi couruls -l /etc/alternatives | grep node
et ça ne retourne rien non plus?Le problème est probablement dû au fait que bash l’avait précédemment exécuté, de même qu’une version hachée dans son cache. Vous pouvez en lire plus à ce sujet ici .
Vous pouvez le confirmer en lançant
et si vous voyez quelque chose comme
alors c’est bien le problème.
Vous pouvez effacer tous les hachages avec
hash -r
ou seulement celui-ci avechash -d node
Soit dit en passant,
which
c’est vraiment un outil qui a été écrit pourcsh
, et il ya des cas extrêmes où il ne fonctionne pas comme prévubash
. Pensez à utilisertype -p
etcommand -v
à trouver des emplacements avecbash
et obtenez un très bon compte-rendu icila source