web-dev-qa-db-fra.com

npm -v renvoie une erreur de segmentation

nodejs, npm fonctionne bien avant. Quand j'essaye de le mettre à jour

Sudo npm cache clean -f
Sudo npm install -g n
Sudo n stable

Et tapez npm -v, il jette "Segmentation fault". Je redémarre le système et je tape une même commande à nouveau, à nouveau, il affiche la même erreur. Donc, je retire les paquets nodejs et npm de buntu 14.04 à travers buntu Software Center et le réinstalle à nouveau.

Ensuite, j'essaie d'installer le package phonegap via npm à l'aide d'une commande

Sudo npm install -g phonegap

Mais cela ne rapporte aucun progrès. Je vérifie donc la version de npm, une erreur "Erreur de segmentation" est générée. J'essaie aussi Sudo npm -v. Cela ne retourne rien.

J'ai donc décidé de supprimer le npm d'ubuntu 14.04 à l'aide de la commande

Sudo apt-get remove npm 

Puis je tape Sudo npm install -g phonegap il ne peut pas lancer le paquet npm n’est pas disponible.

Nodejs

Ma question est:

  1. Le paquet n'est pas là, alors pourquoi je tape npm -v, il retourne "Faute de séparation"
  2. Si le paquet n'est pas supprimé, alors, quand je tape Sudo npm install -g phonegap, pourquoi il ne peut pas installer phonegap.

Aidez-moi à résoudre ce problème. Ou fournissez un moyen de désinstaller les nodejs, npm, phonegap, expressjs, de manière moins propre et de le réinstaller.

Edit:

Phonegap

Edit1:

Selon la réponse @ chj1axr0, le script génère une erreur après l'installation de nodejs

enter image description here

6
Tamil Selvan C

J'ai cherché sur Google et il semble (pour certains) qu'il y ait un bogue dans la dernière version du logiciel Ubuntu de Nodejs qui cause la faute de segmentation que vous rencontrez.

La meilleure façon de l'installer est d'obtenir le noeud de la source et de le compiler.

J'ai installé un script simple sur n Github Gist qui s'en occupera.

#!/bin/sh
# Update System
echo "System Update"
apt-get -y update
echo "Update completed"
# Installing the applications needed to build Nodejs
apt-get -y install libssl-dev git-core pkg-config build-essential curl gcc g++ checkinstall
# Download & Unpack Node.js - v7.3.0
echo "Download Node.js - v7.3.0"
mkdir /tmp/node-install
cd /tmp/node-install
wget https://nodejs.org/dist/latest/node-v7.3.0.tar.gz
tar -zxf node-v7.3.0.tar.gz
echo "Node.js download & unpack completed"
# Install Node.js
echo "Compiling and installing Node.js"
cd node-v7.3.0
./configure && make && checkinstall --install=yes --pkgname=nodejs --pkgversion "7.3.0" --default
echo "Node.js install completed! Deleting The /tmp files"
rm -rf /tmp/node-install
echo "If you have made it this far in the script with no errors popping up all is well have a good day" 

Assurez-vous et utilisez Sudo chmod a+x /path/to/file/install_nodejs_latest.sh pour vous assurer qu'il démarrera. Ensuite, utilisez Sudo sh /path/to/file/install_nodejs_latest.sh pour le démarrer. (Il me faut courir avec Sudo pour que toutes les commandes se déclenchent correctement)

Le script supprime les anciens noeuds nodejs, npm et tous les modules de noeud.

Il mettra à jour npm à la fin du script.

De temps en temps, il est recommandé de faire Sudo npm install -g npm (si vous voulez la dernière version) car npm est mis à niveau plus rapidement que le noeud js

une fois le script terminé, exécutez npm -v et node -v. Si les versions s'affichent, exécutez Sudo npm install -g phonegap, Sudo npm install -g cordova, Sudo npm install -g less également si vous souhaitez mettre à jour l'un des modules à l'avenir, il vous suffit de l'installer à nouveau, ce qui remplacera le précédent. . expressjs est pour une application par bases d'applications, il n'est donc pas recommandé de l'installer globalement

2
chj1axr0
  1. Essayez de supprimer avec apt-get remove --purge. Peut-être que certains fichiers ont été laissés autour.

  2. vérifiez la sortie de which npm.

  3. Comment avez-vous installé nodejs? Je pense que la version amont associe npm avec node, alors qu’elles sont séparées dans Ubuntu. Si vous avez installé npm en amont, supprimer npm avec apt vient de passer à l’utilisation de npm en amont. Si le problème concerne des packages corrompus que le nœud/npm charge au démarrage, le changement ne le résout pas. Supprimez peut-être tous les éléments node/npm de votre système et démarrez un nouveau testament. Qui sait. C'est le noeud.

1
user3113723