Question Impossible d'installer des packages à l'aide du gestionnaire de packages de nœuds dans Ubuntu


Nom de l'interpréteur NodeJS (node) sur Ubuntu a été renommé en nodejs en raison de nom conflit avec un autre package. Voici ce que dit readme.debian:

Le nom amont de la commande d'interpréteur Node.js est "node".     Dans Debian, la commande interpréteur a été modifiée en "nodejs".

Cela a été fait pour éviter une collision d'espace de noms: d'autres commandes utilisent     le même nom dans leurs amont, tels que ax25-node du "noeud"     paquet.

Les scripts appelant Node.js en tant que commande shell doivent être remplacés     utilisez la commande "nodejs".

Cependant, utiliser nodejs permet d’installer des paquets en utilisant npm. L'installation du package échoue avec l'erreur suivante:

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian

Comment faire pour que npm comprenne que nodejs est déjà installé sur le système mais que le nom de l'interpréteur est différent?


472
2018-01-16 17:02


origine


Réponses:


TL; DR:

sudo apt-get install nodejs-legacy

Tout d'abord, permettez-moi de clarifier un peu la situation. Au cours de l'été 2012, les responsables de Debian ont décidé de renommer l'exécutable Node.js pour empêcher une sorte de collision d'espace de noms avec un autre paquet. Ce fut une décision très difficile pour le comité technique de Debian, car elle brise la rétrocompatibilité.

Ce qui suit est une citation du projet de résolution du Comité, publié dans Debian liste de diffusion:

  1. Le paquet nodejs doit être modifié pour fournir / usr / bin / nodejs, et non / usr / bin / node. Le paquet doit déclarer une rupture: relation avec   tout paquet dans Debian qui référence / usr / bin / node.

  2. Le paquet source nodejs doit également fournir un paquet binaire nodejs-legacy sur Priority: extra qui contient / usr / bin / node en tant que lien symbolique vers   / usr / bin / nodejs. Aucun paquet dans l'archive ne peut dépendre ou recommander   le paquet nodejs-legacy, fourni uniquement pour l'amont
      compatibilité. Ce paquet déclare également déclarer un conflit:   relation avec le paquet de noeud.

<...>

Le paragraphe 2 est la solution réelle pour la question du PO. OP devrait essayer d'installer ce paquet au lieu de faire un lien symbolique à la main. Voici un lien vers ce paquet dans l'index des paquets Debian site Internet.

Il peut être installé en utilisant sudo apt-get install nodejs-legacy.

Je n'ai trouvé aucune information sur l'adoption de l'ensemble par les développeurs de NPM, mais je pense npm le paquet sera fixé sur un point et nodejs-legacy devenir vraiment l'héritage.


1054
2018-01-16 19:34



Essayez de relier le nœud à nodejs. D'abord, trouvez où nodejs est

whereis nodejs

Ensuite, reliez le nœud à nodejs

ln -s [the path of nodejs] /usr/bin/node 

Je suppose que / usr / bin est dans votre chemin d'exécution. Ensuite, vous pouvez tester en tapant node ou npm dans votre ligne de commande, et tout devrait fonctionner maintenant.


105
2018-01-16 17:09



Vous pouvez également installer Nodejs en utilisant NVM ou Nodejs Version Manager Il y a beaucoup de avantages à l'aide d'un gestionnaire de version. L'un d'entre eux étant vous n'avez pas à vous soucier de ce problème.


Instructions:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Une fois les packages prérequis installés, vous pouvez dérouler le script d'installation nvm à partir de la page GitHub du projet. Le numéro de version peut être différent, mais en général, vous pouvez le télécharger et l'installer avec la syntaxe suivante:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Cela va télécharger le script et l'exécuter. Il va installer le logiciel dans un sous-répertoire de votre répertoire personnel à ~/.nvm. Il ajoutera également les lignes nécessaires à votre ~/.profile fichier pour utiliser le fichier.

Pour accéder à la fonctionnalité nvm, vous devez vous déconnecter et vous reconnecter, ou vous pouvez vous procurer le fichier ~ / .profile pour que votre session actuelle connaisse les modifications:

source ~/.profile

Maintenant que vous avez installé nvm, vous pouvez installer des versions isolées de Node.js.

Pour connaître les versions de Node.js disponibles pour l'installation, vous pouvez taper:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Comme vous pouvez le voir, la version la plus récente au moment de la rédaction est v0.11.14. Vous pouvez l'installer en tapant:

nvm install 0.11.14

Habituellement, nvm utilisera la dernière version installée. Vous pouvez indiquer explicitement à nvm d'utiliser la version que nous venons de télécharger en tapant:

nvm use 0.11.14

Lorsque vous installez Node.js en utilisant nvm, l'exécutable s'appelle node. Vous pouvez voir la version actuellement utilisée par le shell en tapant:

node -v

Le tutoriel est disponible ici


41
2017-11-12 20:10



  1. Installer nvm en utilisant d'abord:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. Exécuter la commande

    source ~/.profile
    
  3. Maintenant, lancez ceci et cela affichera toutes les versions de paquets installées ou autres:

    nvm ls-remote
    
  4. Les paquets installés seront en vert. Installez la version de votre choix:

    nvm install 6.0.0
    
  5. Vérifiez où n'est pas installé:

    which node
    
  6. Vérifiez la version actuelle:

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    sudo cp -r $n/{bin,lib,share} /usr/local
    

14
2017-07-12 09:48



sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy
source ~/.profile

Combiné la réponse acceptée avec source ~/.profile à partir du commentaire qui a été plié et des commandes de nettoyage avant. Très probablement, vous devrez également sudo apt-get install npm après.


12
2018-03-08 03:53



Voici une autre approche que j'utilise depuis que j'aime n pour faciliter la commutation entre les versions de nœuds.

Sur un nouveau système Ubuntu, installez d’abord le noeud «system»:

curl -sL https://deb.nodesource.com/setup | sudo bash -

Puis installez n module globalement:

npm install -g n

Puisque le nœud du système a été installé en premier (ci-dessus), le système des alternatives peut être utilisé pour pointer proprement vers le nœud fourni par n. Assurez-vous d’abord que le système des alternatives n’a rien pour le nœud:

update-alternatives --remove-all node

Ensuite, ajoutez le noeud fourni par n:

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

Ensuite, ajoutez le noeud fourni par le système (celui qui a été installé avec curl):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

Maintenant, sélectionnez le noeud fourni par n en utilisant le menu interactif (sélectionnez /usr/local/bin/node à partir du menu présenté par la commande suivante):

update-alternatives --config node

Enfin, depuis /usr/local/bin a généralement une priorité plus élevée dans PATH que /usr/bin, l'alias suivant doit être créé (entrez dans votre .bashrc ou .zshrc) si le noeud du système de remplacement doit être efficace; sinon le noeud installé avec n dans / usr / local / bin a toujours la priorité:

alias node='/usr/bin/node'

Maintenant, vous pouvez facilement basculer entre les versions de noeud avec n <desired node version number>.


9
2017-12-02 04:11



pour moi le problème a été résolu par,

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest

9
2017-08-03 11:07



Sur Linux Mint 17, j'ai essayé les deux solutions (créer un lien symbolique ou utiliser le nodejs-legacy paquet) sans succès.

La seule chose qui a finalement fonctionné pour moi était d'utiliser le ppa de Chris Lea:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Ce noeud installé version 10.37 et npm 1.4.28. Après cela, je pourrais installer des paquets globalement.


8
2018-02-10 00:52



Comme d'autres personnes le mentionnent déjà, je suggérerai de ne pas utiliser "sudo apt-get" pour installer le noeud ou n'importe quelle bibliothèque de développement. Vous pouvez télécharger la version requise à partir de https://nodejs.org/dist/v6.9.2/ et configurez votre propre environnement.

Je vais recommander des outils comme nvm et n, pour gérer votre version de noeud. Il est très pratique de basculer et de travailler avec ces modules. https://github.com/creationix/nvm https://github.com/tj/n

Ou écrivez bash basique pour télécharger zip / tar, extrayez le dossier de déplacement et créez un lien logiciel. Chaque fois que vous avez besoin de mettre à jour, pointez simplement l'ancien lien vers la nouvelle version téléchargée. Comme j'ai créé pour le mien, vous pouvez vous référer: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts 
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2

7
2017-12-08 09:47