Installation de NPM sur Raspberry Pi (image Wheezy)


28

J'ai eu la chance d'avoir un Raspberry Pi sous l'arbre cette année et j'ai eu un peu de plaisir à jouer avec Node.js sur l'appareil. Cependant, Node.js est beaucoup plus intéressant lorsque vous pouvez dérouler des packages et les connecter à vos applications - et c'est là que j'ai des problèmes.

Si j'essaie d'installer NPM avec Node.js avec la commande suivante:

sudo apt-get install nodejs npm

J'obtiens l'erreur suivante:

pi@raspberrypi ~ $ sudo apt-get install nodejs npm
Reading        package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nodejs : Breaks: npm (< 1.1.4~dfsg-2~) but 1.1.4~dfsg-1 is to be installed
 npm : Depends: node-semver but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Je suis assez nouveau sur la façon dont la gestion des packages fonctionne avec les systèmes d'exploitation Linux basés sur Debian et je ne sais pas grand-chose sur la façon dont la communauté node.js a structuré leurs packages spécifiques. Il convient de noter que l'installation de node.js en elle-même fonctionne très bien, et si j'essaie d'installer NPM tout seul, c'est ce que j'obtiens.

pi@raspberrypi ~ $ sudo apt-get install npm
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: nodejs-dev but it is not going to be installed
       Depends: node-request but it is not going to be installed
       Depends: node-mkdirp but it is not going to be installed
       Depends: node-minimatch but it is not going to be installed
       Depends: node-semver but it is not going to be installed
       Depends: node-ini but it is not going to be installed
       Depends: node-graceful-fs but it is not going to be installed
       Depends: node-abbrev but it is not going to be installed
       Depends: node-nopt but it is not going to be installed
       Depends: node-fstream but it is not going to be installed
       Depends: node-rimraf but it is not going to be installed
       Depends: node-tar but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Je ne suis pas sûr, mais mon instinct me dit que c'est quelque chose à voir avec le node-semverpaquet. Si j'installe le nodejspackage par lui-même et que j'essaie d'installer node-semverc'est la sortie que j'obtiens.

pi@raspberrypi ~ $ sudo apt-get install node-semver
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 node-semver : Depends: nodejs but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Des pointeurs?

Réponses:


22

Essayez de les installer tous ensemble:

sudo apt-get install nodejs npm node-semver

32

C'est la meilleure façon d'installer NodeJs sur Raspberry Pi, j'adore cette façon, et je pense que c'est facile à faire, et plus tard pour la mise à jour, remplacez simplement le dossier '/ opt / nodejs' par la nouvelle version:

wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-armv6l.tar.gz

sudo mv node-v4.2.4-linux-armv6l.tar.gz /opt

cd /opt

sudo tar -xzf node-v4.2.4-linux-armv6l.tar.gz

sudo mv node-v4.2.4-linux-armv6l nodejs

sudo rm node-v4.2.4-linux-armv6l.tar.gz

sudo ln -s /opt/nodejs/bin/node /usr/bin/node

sudo ln -s /opt/nodejs/bin/npm /usr/bin/npm

Notez qu'il existe également une version arm71 pour les dernières versions de Raspberry.


2
Cette réponse est à jour.
Uriel

1
C'était la meilleure solution jusqu'à présent, mais je viens d'en trouver une autre, en utilisant nvm (Node Version Manager) qui vous permet également de mettre à jour facilement le nœud mais également d'utiliser différentes versions en même temps. Ils partagent les étapes du lien symbolique pour autoriser l'accès au nœud pour tous les utilisateurs. Un court tutoriel ici losant.com/blog/how-to-install-nodejs-on-raspberry-pi avec une solution pour éviter les problèmes de lien symbolique: stackoverflow.com/a/29903645/3480671
bosch

NB: /usr/local/binserait un peu plus approprié pour les liens symboliques gérés par l' administrateur local à un transfert de fichier gérés admin-locale à/opt
JamesTheAwesomeDude

cela a fonctionné pour moi, le problème réel que je rencontrais est que NPM n'est pas venu avec le nœud, mais NPM n'existait pas en tant que autonome, cela a installé NPM, mais maintenant Node ne fonctionne pas
Jacob Schneider

4

Adafruit fournit un nœud et un npm (relativement) actuels. Après ne pas avoir trouvé de compilation utile, cela a fonctionné pour moi avec un certain nombre de packages (express, body-parser, pg)


2

J'exécute raspbian jessie sur pi 3. Le nœud est préinstallé dans l'image mais pas npm . J'ai eu des difficultés à installer npm et ce fil m'a aidé à obtenir des indices.

L'erreur que j'ai reçue était

pi@raspberrypi:~ $ **sudo apt-get install nodejs npm node-semver**
Reading package lists... Done
Building dependency tree       
Reading state information... Done
nodejs is already the newest version.
nodejs set to manually installed.
The following extra packages will be installed:
  gyp libc-ares-dev libjs-node-uuid libjs-underscore libssl-dev 
  libssl-doc libv8-3.14-dev node-abbrev node-ansi node-ansi-color-table 
  node-archy node-async node-block-stream node-combined-stream 
  node-cookie-jar node-delayed-stream node-forever-agent node-form-data 
  node-fstream node-fstream-ignore node-github-url-from-git node-glob 
  node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe
  node-lockfile node-lru-cache node-mime node-minimatch
  node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
  node-npmlog node-once node-osenv node-qs node-read node-read-package-json
  node-request node-retry node-rimraf node-sha node-sigmund node-slide 
  node-tar node-tunnel-agent node-underscore node-which nodejs-dev
Suggested packages:
  node-hawk node-aws-sign node-oauth-sign node-http-signature
The following NEW packages will be installed:
  gyp libc-ares-dev libjs-node-uuid libjs-underscore libssl-dev 
  libssl-doc libv8-3.14-dev node-abbrev node-ansi node-ansi-color-table 
  node-archy node-async node-block-stream node-combined-stream 
  node-cookie-jar node-delayed-stream node-forever-agent node-form-data   
  node-fstream node-fstream-ignore node-github-url-from-git node-glob 
  node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe
  node-lockfile node-lru-cache node-mime node-minimatch
  node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
  node-npmlog node-once node-osenv node-qs node-read node-read-package-json
  node-request node-retry node-rimraf node-semver node-sha node-sigmund 
  node-slide node-tar node-tunnel-agent node-underscore node-which  
  nodejs-dev npm
0 upgraded, 55 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,222 kB/3,708 kB of archives.
After this operation, 13.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
**Err http://mirrordirector.raspbian.org/raspbian/ jessie/main libssl-dev armhf 1.0.1k-3+deb8u2
  404  Not Found [IP: 5.153.225.207 80]
Err http://mirrordirector.raspbian.org/raspbian/ jessie/main libssl-doc all 1.0.1k-3+deb8u2
  404  Not Found [IP: 5.153.225.207 80]
E: Failed to fetch 
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?**
pi@raspberrypi:~ $ 

Les 2 commandes ci-dessous m'ont aidé

sudo apt-get update
sudo apt-get install npm

3
Pourriez-vous modifier votre message pour le rendre plus lisible. Le mur de texte est-il vraiment nécessaire?
Ghanima

2

Je trouve que le moyen le plus simple d'obtenir NPM (et la dernière version de Node.js) sur n'importe quel Raspberry PI (Zero to 3) est d'utiliser "NVM" ( Node Version Manager ).

Pour installer NVM:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.6/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

Une fois installé, vous pouvez télécharger la dernière version de Node.js à tout moment comme ceci:

nvm install node

Terminé!

Vérifiez que NPM est installé:

npm --version

Cela a bien fonctionné pour moi sur mon pi 3b + la première solution a installé npm 1.6 et a continué à rencontrer des erreurs lors de l'installation des packages. NVM a fait fonctionner les choses correctement.
sirclesam

1

Si vous rencontrez des problèmes avec les packages binaires, je vous recommande de le compiler vous-même, de cette façon, vous aurez une meilleure idée de quelque chose qui échoue / les packages binaires peuvent être pour un type de processeur différent (pas ARM).

Je suggère de consulter https://gist.github.com/3301813 pour les instructions de compilation de Raspberry Pi NodeJS.


Merci Ben. J'avais déjà rencontré cet article auparavant. J'ai supposé que NPM pourrait être distinct de l'arborescence source Node.js?

NPM est séparé à la source github.com/isaacs/npm mais les versions récentes pour nodejs sont généralement fournies avec npm.

1

Comme l'a souligné Ben, je suggère de compiler Node.js par vous-même sur le Raspberry Pi. Depuis 0.8.10 (ou plus), cela est possible sans plus tarder. Simplement

$ ./configure
$ make
$ sudo make install

et c'est tout. Ensuite, Node.js sera installé, y compris npm.

Fonctionne comme un charme :-)!


Merci Golo. Minitech a fourni une réponse qui a mieux fonctionné pour moi. Le Raspberry Pi est assez lent, donc je pense que la construction, puis l'installation serait un peu plus douloureuse.

1
Veuillez regarder la version de Node.js en cours d'installation à l'aide de apt-get, puis comparer cette version à la version actuelle de Node.js, et vous saurez pourquoi je n'ai pas suggéré d'utiliser apt-get... ;-)
Golo Roden

J'ai créé des tarballs précompilés qui peuvent être utilisés sur un Raspberry Pi si vous ne voulez pas vraiment attendre que la source soit compilée. gist.github.com/3245130
Adam MW

1

Il vous suffit de taper

pi@raspberrypi ~ $ sudo apt-get install nodejs npm node-semver 

Cela a fonctionné pour moi et j'ai pu l'installer sans erreur et cela devrait fonctionner avec un programme!


1
Veuillez être plus précis: quelle version de nœud avez-vous installée de cette façon, quelle était la source du package (en avez-vous ajouté une nouvelle?), Sur quel système d'exploitation avez-vous installé, sur quelle version de rPi avez-vous, sur quelle arche de nœud est-ce ( armv6, v7). Vous répondez peut résoudre quelque chose mais nous ne savons pas quoi donc personne ne l'utilisera.
bosch

0

Essayez de suivre ce post . J'arrive à exécuter npm sur / opt / node / npm, mais quand je le copie dans / usr / bin / il manque «npmlog».


Il est préférable que vous copiez les étapes dans la réponse tout en attribuant à votre source des informations supplémentaires, au cas où le site source tombe en panne, la page est supprimée ou déplacée, etc. Au moins un résumé des grandes lignes du processus.
Tevo D
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.