web-dev-qa-db-fra.com

Impossible d'installer des paquets à l'aide du gestionnaire de paquets de noeud dans Ubuntu

Le nom de l'interpréteur NodeJS (node) sous Ubuntu a été renommé en nodejs en raison d'un conflit de nom avec un autre paquet. Voici ce que le readme. Debian dit:

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

Ceci a été fait pour éviter une collision entre espaces de noms: d'autres commandes utilisent le même nom en amont, tel que ax25-node du paquet "node".

Les scripts appelant Node.js en tant que commande Shell doivent être modifiés pour utiliser la commande "nodejs".

Cependant, utiliser nodejs complique l’installation de paquets avec 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 comprendre à npm que nodejs est déjà installé sur le système mais que le nom de l'interpréteur est différent?

488
Sayem

TL; DR:

Sudo apt-get install nodejs-legacy

Tout d’abord, laissez-moi clarifier un peu la situation. À l'été 2012, les responsables Debian ont décidé de renommer l'exécutable Node.js afin d'éviter toute sorte de collision d'espace de noms avec un autre paquet. C’était une décision très difficile à prendre pour le comité technique de Debian, car elle supprime la compatibilité ascendante.

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

  1. Le paquetage nodejs doit être modifié pour fournir/usr/bin/nodejs, pas/usr/bin/node. Le paquet doit déclarer une relation Breaks: avec tous les paquets dans Debian faisant 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 package dans l’archive ne peut dépendre du package nodejs-legacy, qui est fourni uniquement pour les applications en amont, ni le recommander.
    compatibilité. Ce package déclare doit également déclarer une relation Conflicts: avec le package de noeud.

<...>

Le paragraphe 2 est la solution réelle au problème d'OP. 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 du paquet Debian site web .

Il peut être installé avec Sudo apt-get install nodejs-legacy.

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

1084
vbo

Essayez de relier noeud à nodejs. D'abord trouver où est nodejs

whereis nodejs

Ensuite, lien soft noeud à 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.

110
leorex

Vous pouvez également installer Nodejs en utilisant NVM ou Nodejs Version Manager Il y a beaucoup de avantages à utiliser un gestionnaire de versions . L'un d'entre eux étant que 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 extraire 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 installera le logiciel dans un sous-répertoire de votre répertoire personnel à l'adresse ~/.nvm. Il ajoutera également les lignes nécessaires à votre fichier ~/.profile pour utiliser le fichier.

Pour accéder à la fonctionnalité nvm, vous devez vous déconnecter et vous reconnecter, ou vous pouvez créer le fichier ~/.profile pour que votre session en cours 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 constater, la version la plus récente au moment de l'écriture est la 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 explicitement dire à nvm d’utiliser la version que nous venons de télécharger en tapant:

nvm use 0.11.14

Lorsque vous installez Node.js à l’aide de nvm, l’exécutable s’appelle nœud. Vous pouvez voir la version actuellement utilisée par le shell en tapant:

node -v

Le tutoriel comeplete peut être trouvé ici

42
Eduardo Dennis
  1. Installez nvm d'abord en utilisant:

    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 montrera toutes les versions installées ou autres des paquets:

    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érifier 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
    
17
Ritesh
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 certaines commandes de nettoyage avant. Très probablement, vous aurez également besoin de Sudo apt-get install npm après.

13

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
11
shrishinde

Voici une autre approche que j'utilise depuis que j'aime n pour passer facilement d'une version à l'autre.

Sur un nouveau système Ubuntu, installez d’abord le nœud 'système':

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

Ensuite, installez le module n globalement:

npm install -g n

Le nœud système ayant été installé en premier (ci-dessus), le système alternatif peut être utilisé pour pointer proprement sur le nœud fourni par n . D'abord, assurez-vous que le système d'alternatives n'a rien pour le noeud:

update-alternatives --remove-all node

Ajoutez ensuite 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

Sélectionnez maintenant le noeud fourni par n à l'aide du menu interactif (sélectionnez /usr/local/bin/node dans le menu présenté par la commande suivante):

update-alternatives --config node

Enfin, étant donné que /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 système alternatif doit être effectif; sinon, le nœud installé avec n dans/usr/local/bin a toujours la priorité:

alias node='/usr/bin/node'

Maintenant, vous pouvez facilement changer de version de noeud avec n <desired node version number>.

9
Ville

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

Je recommanderai des outils tels que nvm et n , pour gérer votre version de noeud. Il est très pratique de passer et de travailler avec ces modules. https://github.com/creationix/nvmhttps://github.com/tj/n

Ou écrivez bash pour télécharger Zip/tar, extrayez le dossier de déplacement et créez un lien symbolique. Chaque fois que vous avez besoin de mettre à jour, il suffit de pointer l'ancien lien vers la nouvelle version téléchargée. Comme je l'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
8
xdeepakv

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

La seule chose qui a finalement fonctionné pour moi a été 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
Suzana

Solution simple de ici

curl -sL https://deb.nodesource.com/setup_7.x | Sudo -E bash --
Sudo apt-get install nodejs

Vous pouvez spécifier la version en modifiant la valeur setup_x.x, par exemple en setup_5.x

5
Krzysztof Karolak

Votre système ne peut pas détecter le nœud de chemin js binary.

1. quel noeud

2.Puis le nœud de liaison symbolique vers 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.

4
frostcs

Désinstallez la version de noeud que vous avez

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

installer nvm (Node Version Manager) https://github.com/creationix/nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Vous pouvez maintenant installer la version de nœud de votre choix et passer d’une version à l’autre.

4
davide andreazzini

Je l'ai corrigé en dissociant/usr/sbin/node (qui est lié au paquet ax25-node), puis j'ai créé un lien vers nodejs en utilisant ceci en ligne de commande

Sudo ln -s /usr/bin/nodejs /usr/bin/node

Parce que les paquets tels que karma ne fonctionnent pas avec le nom nodejs, toutefois, changer la première ligne du script karma de node à nodejs, mais je préfère résoudre ce problème une fois pour toutes

2

Ceci est le votre noeud n'est pas installé correctement, vous devez d'abord désinstaller le noeud, puis installez à nouveau. Pour installer le nœud, ceci peut vous aider http://array151.com/blog/nodejs-tutorial-and-set-up/

après cela, vous pouvez installer les paquets facilement. Pour installer les packages, cela peut vous aider

http://array151.com/blog/npm-node-package-manager/

1
Dinesh Jain

Le problème n'est pas dans l'installateur
remplacer nodejs avec node ou changer le chemin de/usr/bin/nodejs en/usr/bin/node

1
Vinayk93

Pour moi, le correctif consistait à supprimer les packages node * ainsi que les packages npm.

Puis une nouvelle installation en tant que:

Sudo apt-get install autoclean
Sudo apt-get install nodejs-legacy
npm install
1
Jimmy

vous pouvez créer un lien ln -s nodejs noeud dans /usr/bin espérons que cela résout votre problème.

0
Nitish Agarwal