Instalando o NPM no Raspberry Pi (imagem Wheezy)


28

Tive a sorte de conseguir um Raspberry Pi debaixo da árvore este ano e me diverti um pouco brincando com o Node.js no dispositivo. No entanto, o Node.js é muito mais interessante quando você pode extrair pacotes e conectá-los aos seus aplicativos - e é aqui que estou tendo alguns problemas.

Se eu tentar instalar o NPM junto com o Node.js com o seguinte comando:

sudo apt-get install nodejs npm

Estou tendo o erro a seguir:

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.

Eu sou muito novo em como o gerenciamento de pacotes funciona com sistemas operacionais Linux baseados no Debian e não sei muito sobre como a comunidade node.js. estruturou seus pacotes específicos. Vale a pena notar que a instalação do node.js por si só funciona muito bem, e se eu tentar instalar o NPM por si só, é isso que recebo.

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.

Não tenho certeza, mas meu intestino está me dizendo que isso tem algo a ver com o node-semverpacote. Se eu instalar o nodejspacote por si só e tentar instalar, node-semveressa é a saída que eu recebo.

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.

Alguma dica?

Respostas:


22

Tente instalá-los todos juntos:

sudo apt-get install nodejs npm node-semver

32

Esta é a melhor maneira de instalar os NodeJs no raspberry pi, eu amo isso e acho que é fácil de fazer e, posteriormente, para atualizar, substitua a pasta '/ opt / nodejs' pela nova versão:

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

Observe que também há uma versão arm71 para as últimas versões do Raspberry.


2
Essa resposta é a atualizada.
Uriel

1
Esta foi a melhor solução até agora, mas encontrei outra usando o nvm (Node Version Manager), que também permite atualizar facilmente o nó, mas também usar versões diferentes ao mesmo tempo. Eles compartilham as etapas do link simbólico para permitir o acesso do nó a todos os usuários. Um pequeno tutorial aqui, losant.com/blog/how-to-install-nodejs-on-raspberry-pi, com uma solução para evitar os problemas de link simbólico: stackoverflow.com/a/29903645/3480671
bosch

NB: /usr/local/binseria ligeiramente mais apropriado para links simbólicos locais de gestão, de administração a um filedump administração local de gestão em/opt
JamesTheAwesomeDude

funcionou para mim, o problema real que eu estava tendo é que o NPM não vinha com nó, mas o NPM não existia como autônomo, ele instalou o NPM, mas agora o Node não funciona
Jacob Schneider

4

O Adafruit fornece um nó (relativamente) atual e npm. Depois de não encontrar um compilador útil, funcionou para mim com vários pacotes (express, body-parser, pg)


2

Eu executo o raspbian jessie no pi 3. O nó vem pré-instalado na imagem, mas o npm não . Tive desafios na instalação do npm e esse tópico me ajudou a obter pistas.

O erro que recebi foi

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

Os 2 comandos abaixo em sequência me ajudaram

sudo apt-get update
sudo apt-get install npm

3
Você poderia editar sua postagem para torná-la mais legível. O muro de texto é realmente necessário?
Ghanima

2

Acho que a maneira mais fácil de obter o NPM (e a versão mais recente do Node.js) em qualquer PI Raspberry (zero a 3) é usar o "NVM" ( Node Version Manager ).

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

Depois de instalado, você pode baixar a versão mais recente do Node.js a qualquer momento, da seguinte forma:

nvm install node

Feito!

Verifique se o NPM está instalado:

npm --version

Isso funcionou bem para mim no meu pi 3b + a primeira solução instalada no npm 1.6 e continuava com erros ao instalar pacotes. O NVM colocou as coisas em funcionamento corretamente.
sirclesam 10/06

1

Se você estiver tendo problemas com os pacotes binários, recomendo que você o compile, assim você terá uma idéia melhor de quando algo está falhando / os pacotes binários podem ser para um tipo diferente de processador (não o ARM).

Sugiro verificar https://gist.github.com/3301813 para obter instruções de compilação do Raspberry Pi NodeJS.


Obrigado Ben. Eu já havia encontrado esse artigo antes. Supus que o NPM pudesse ser separado da árvore de origem do Node.js.

O NPM é separado na fonte github.com/isaacs/npm, no entanto, as versões recentes do nodejs geralmente vêm com o npm empacotado.

1

Como Ben apontou, sugiro compilar o Node.js por conta própria no Raspberry Pi. Desde 0.8.10 (mais ou menos), isso é possível sem mais delongas. Simplesmente

$ ./configure
$ make
$ sudo make install

e é isso. Em seguida, o Node.js será instalado, incluindo npm.

Funciona como um charme :-)!


Obrigado Golo. A Minitech forneceu uma resposta que funcionou melhor para mim. O Raspberry Pi é bastante lento, então eu pensaria que construir e instalar seria um pouco mais doloroso.

1
Por favor, dê uma olhada na versão do Node.js sendo instalada usando apt-gete, em seguida, compare esta versão com a versão atual do Node.js. Você saberá por que não sugeri usar apt-get... ;-)
Golo Roden

Fiz alguns tarballs pré-compilados que podem ser usados ​​em um Raspberry Pi se você realmente não quiser esperar a fonte compilar. gist.github.com/3245130
Adam MW

1

Tudo o que você faz é digitar

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

Funcionou para mim e eu consegui instalá-lo sem erros e deve funcionar com um programa!


1
Por favor, seja mais preciso: qual versão do nó você instalou dessa maneira, qual foi a fonte do pacote (você adicionou um novo?), Em qual sistema operacional você instalou, em qual versão do rPi você tem, em qual arco do nó ( armv6, v7). Sua resposta pode resolver alguma coisa, mas não sabemos o que, portanto, ninguém a usará.
bosch

0

Tente seguir este post . Consigo executar o npm em / opt / node / npm, mas quando o copio para / usr / bin / perdemos 'npmlog'.


É preferível que você copie as etapas na resposta enquanto atribui sua fonte a informações adicionais, caso o site de origem fique inoperante, a página seja excluída ou movida etc. etc. Pelo menos um resumo dos traços gerais do processo.
precisa saber é
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.