Instalar NPM en Raspberry Pi (Imagen Wheezy)

28

Tuve la suerte de obtener una Raspberry Pi debajo del árbol este año y me he divertido un poco jugando con Node.js en el dispositivo. Sin embargo, Node.js es mucho más interesante cuando puede desplegar paquetes y conectarlos a sus aplicaciones, y aquí es donde tengo algunos problemas.

Si intento instalar NPM junto con Node.js con el siguiente comando:

sudo apt-get install nodejs npm

Obtuve el siguiente error:

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.

Soy bastante nuevo en cómo funciona la administración de paquetes con los sistemas operativos Linux basados ​​en Debian y no sé mucho acerca de cómo la comunidad node.js ha estructurado sus paquetes específicos. Vale la pena señalar que la instalación de node.js en sí misma funciona bien, y si trato de instalar NPM solo, esto es lo que obtengo.

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.

No estoy seguro, pero mi instinto me dice que tiene algo que ver con el node-semverpaquete. Si instalo el nodejspaquete solo y luego intento instalarlo, node-semvereste es el resultado que obtengo.

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.

¿Algún puntero?

Mitch Denny
fuente

Respuestas:

22

Intenta instalarlos todos juntos:

sudo apt-get install nodejs npm node-semver
Ry-
fuente
32

Esta es la mejor manera de instalar NodeJs en raspberry pi, me encanta de esa manera, y creo que es fácil de hacer, y más tarde para la actualización, simplemente reemplace la carpeta '/ opt / nodejs' con la nueva versión:

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

Tenga en cuenta que también hay una versión arm71 para las últimas versiones de Raspberry.

Yassine Khachlek
fuente
2
Esta respuesta es la actualizada.
Uriel
1
Esta fue la mejor solución hasta ahora, pero acabo de encontrar otra, usando nvm (Node Version Manager) que también le permite actualizar fácilmente el nodo pero también usar diferentes versiones al mismo tiempo. Comparten los pasos del enlace simbólico para permitir el acceso de nodos a todos los usuarios. Un breve tutorial aquí losant.com/blog/how-to-install-nodejs-on-raspberry-pi con una solución para evitar los problemas de enlaces simbólicos: stackoverflow.com/a/29903645/3480671
bosch
NB: /usr/local/binsería un poco más apropiado para local gestionado por un administrador enlaces simbólicos a un volcado de archivos gestionada administrador local en/opt
JamesTheAwesomeDude
funcionó para mí, el problema real que estaba teniendo es que NPM no venía con el nodo, pero NPM no existía de manera independiente, esto instaló NPM, pero ahora Nodo no funciona
Jacob Schneider
4

Adafruit proporciona un nodo (relativamente) actual y npm. Después de no encontrar una compilación útil, esto me funcionó con varios paquetes (express, body-parser, pg)

usuario542319
fuente
2

Ejecuto raspbian jessie en pi 3. El nodo viene preinstalado en la imagen pero npm no . Tuve desafíos para instalar npm y este hilo me ayudó a obtener pistas.

El error que recibí fue

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:~ $ 

Los siguientes 2 comandos en secuencia me ayudaron

sudo apt-get update
sudo apt-get install npm
Krishnan V
fuente
3
¿Podrías editar tu publicación para que sea más legible? ¿Es realmente necesario el muro de texto?
Ghanima
2

Creo que la forma más fácil de obtener NPM (y la última versión de Node.js) en cualquier Raspberry PI (Zero to 3) es usar "NVM" ( Node Version Manager ).

Para instalar 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

Una vez instalado, puede descargar la última versión de Node.js en cualquier momento así:

nvm install node

¡Hecho!

Verifique que NPM esté instalado:

npm --version
Wireblue
fuente
Esto funcionó bien para mí en mi pi 3b +, la primera solución que instaló npm 1.6 y seguía encontrando errores al instalar paquetes. NVM puso las cosas en marcha correctamente.
sirclesam
1

Si tiene problemas con los paquetes binarios, le recomiendo que lo compile usted mismo, de esta manera tendrá una mejor idea de si algo falla / los paquetes binarios pueden ser para un tipo diferente de procesador (no ARM).

Sugiero consultar https://gist.github.com/3301813 para obtener las instrucciones de compilación de Raspberry Pi NodeJS.


fuente
Gracias Ben Había encontrado ese artículo antes. Supuse que NPM podría estar separado del árbol de origen de Node.js.
NPM está separado en la fuente github.com/isaacs/npm, sin embargo, las versiones recientes para nodejs generalmente vienen con npm incluido.
1

Como señaló Ben, sugeriría compilar Node.js por su cuenta en la Raspberry Pi. Desde 0.8.10 (más o menos) esto es posible sin más preámbulos. Simplemente

$ ./configure
$ make
$ sudo make install

y eso es. Luego se instalará Node.js incluido npm.

Funciona como un encanto :-)!

Golo Roden
fuente
Gracias Golo Minitech proporcionó una respuesta que funcionó mejor para mí. El Raspberry Pi es bastante lento, por lo que creo que construirlo y luego instalarlo sería un poco más doloroso.
1
Eche un vistazo a la versión de Node.js que se está instalando usando apt-get, y luego compare esta versión con la versión actual de Node.js, y sabrá por qué no sugerí usar apt-get... ;-)
Golo Roden
He hecho algunos tarballs precompilados que se pueden usar en una Raspberry Pi si realmente no quieres esperar a que se compile la fuente. gist.github.com/3245130
Adam MW
1

Todo lo que haces es escribir

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

¡Funcionó para mí y pude instalarlo sin errores y debería funcionar con un programa!

FrambuesaPiCientífico
fuente
1
Sea más preciso: qué versión de nodo instaló de esta manera, cuál fue el origen del paquete (¿agregó uno nuevo?), En qué sistema operativo instaló, qué versión de rPi tiene, qué arco de nodo es ( armv6, v7). Su respuesta podría resolver algo, pero no sabemos qué, por lo que nadie lo usará.
bosch
0

Intenta seguir esta publicación . Me las arreglo para ejecutar npm en / opt / node / npm, pero cuando lo copio a / usr / bin / se pierde 'npmlog'.

Vinicius Senna
fuente
Se prefiere que copie los pasos en la respuesta mientras atribuye su fuente para obtener información adicional, en caso de que el sitio de la fuente se caiga, la página se elimine o se mueva, etc. Al menos un resumen de los trazos generales del proceso.
Tevo D