Bắt NPM được cài đặt trên Raspberry Pi (Hình ảnh Wheezy)


28

Tôi đã may mắn có được một Raspberry Pi dưới gốc cây trong năm nay và tôi đã có một chút thú vị khi chơi với Node.js trên thiết bị. Tuy nhiên, Node.js thú vị hơn nhiều khi bạn có thể kéo các gói xuống và cắm chúng vào các ứng dụng của mình - và đây là lúc tôi gặp một số rắc rối.

Nếu tôi cố cài đặt NPM cùng với Node.js bằng lệnh sau:

sudo apt-get install nodejs npm

Tôi nhận được lỗi sau đây:

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.

Tôi khá mới mẻ về cách quản lý gói hoạt động với các hệ điều hành Linux dựa trên Debian và không biết nhiều về cách cộng đồng node.js đã cấu trúc các gói cụ thể của chúng. Điều đáng chú ý là bản thân việc cài đặt node.js chỉ hoạt động tốt và nếu tôi cố gắng tự cài đặt NPM thì đây là những gì tôi nhận được.

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.

Tôi không chắc chắn, nhưng ruột của tôi đang nói với tôi rằng đó là một cái gì đó để làm với node-semvergói. Nếu tôi tự cài đặt nodejsgói và sau đó cố gắng cài đặt node-semverthì đây là đầu ra mà tôi nhận được.

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.

Bất kỳ con trỏ?

Câu trả lời:


22

Hãy thử cài đặt tất cả chúng cùng nhau:

sudo apt-get install nodejs npm node-semver

32

Đây là cách tốt nhất để cài đặt NodeJ trên raspberry pi, tôi thích cách đó và tôi nghĩ nó dễ thực hiện, và sau đó để cập nhật chỉ cần thay thế thư mục '/ opt / nodejs' bằng bản phát hành mới:

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

Lưu ý rằng cũng có phiên bản arm71 cho các phiên bản Raspberry cuối cùng.


2
Câu trả lời này là cập nhật.
Uriel

1
Đây là giải pháp tốt nhất cho đến nay nhưng tôi chỉ tìm thấy một giải pháp khác, sử dụng nvm (Trình quản lý phiên bản nút) cũng cho phép bạn dễ dàng cập nhật nút nhưng cũng sử dụng các phiên bản khác nhau cùng một lúc. Họ chia sẻ các bước symlink để cho phép truy cập nút cho tất cả người dùng. Một hướng dẫn ngắn ở đây losant.com/blog/how-to-install-nodejs-on-raspberry-pi với một giải pháp để tránh các vấn đề về liên kết tượng trưng: stackoverflow.com/a/29903645
bosch

NB: /usr/local/binsẽ hơi thích hợp hơn cho liên kết tượng trưng địa phương-admin-quản lý để một filedump địa phương-admin-quản lý/opt
JamesTheAwesomeDude

nó hoạt động với tôi, vấn đề thực sự tôi gặp phải là NPM không đi kèm với nút, nhưng NPM không tồn tại dưới dạng độc lập, điều này đã được cài đặt NPM, nhưng bây giờ Node không hoạt động
Jacob Schneider

4

Adaf nhung cung cấp một nút (tương đối) hiện tại và npm. Sau khi không tìm thấy một trình biên dịch hữu ích, nó đã làm việc với tôi với một số gói (express, body-Parser, pg)


2

Tôi chạy jaspie raspbian trên pi 3. Nút được cài đặt sẵn trong ảnh nhưng npm thì không . Có những thách thức trong việc cài đặt npm và chủ đề này đã giúp tôi có được manh mối.

Lỗi tôi nhận được là

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

2 lệnh dưới đây theo trình tự đã giúp tôi

sudo apt-get update
sudo apt-get install npm

3
Bạn có thể vui lòng chỉnh sửa bài viết của bạn để làm cho nó dễ đọc hơn. Là bức tường của văn bản thực sự cần thiết?
Ghanima

2

Tôi thấy cách dễ nhất để có NPM (và phiên bản mới nhất của Node.js) trên bất kỳ Raspberry PI nào (từ 0 đến 3) là sử dụng "NVM" ( Trình quản lý phiên bản nút ).

Để cài đặt 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

Sau khi cài đặt, bạn có thể tải xuống phiên bản Node.js mới nhất bất cứ lúc nào như vậy:

nvm install node

Làm xong!

Xác minh NPM đã được cài đặt:

npm --version

Điều này hoạt động tốt với tôi trên pi 3b + giải pháp đầu tiên được cài đặt npm 1.6 và tiếp tục gặp lỗi khi cài đặt gói. NVM có mọi thứ và chạy đúng.
sirclesam

1

Nếu bạn gặp vấn đề với các gói nhị phân, tôi khuyên bạn nên tự biên dịch nó, bằng cách này bạn sẽ hiểu rõ hơn trong khi có lỗi xảy ra / các gói nhị phân có thể dành cho một loại bộ xử lý khác (không phải ARM).

Tôi khuyên bạn nên kiểm tra https://gist.github.com/3301813 để biết hướng dẫn biên dịch Raspberry Pi NodeJS.


Cảm ơn Ben. Tôi đã đi qua bài báo đó trước đây. Tôi giả sử rằng NPM có thể tách biệt với cây nguồn Node.js?

NPM được tách riêng tại nguồn github.com/isaacs/npm tuy nhiên các phiên bản gần đây cho nodejs thường đi kèm với npm đi kèm.

1

Như Ben đã chỉ ra, tôi khuyên bạn nên tự biên dịch Node.js trên Raspberry Pi. Kể từ 0.8.10 (hoặc hơn), điều này là có thể mà không cần phải quảng cáo thêm. Đơn giản

$ ./configure
$ make
$ sudo make install

và đó là nó. Sau đó, Node.js sẽ được cài đặt bao gồm npm.

Hoạt động như một bùa mê :-)!


Cảm ơn Golo. Minitech cung cấp một câu trả lời làm việc tốt hơn cho tôi. Raspberry Pi khá chậm nên tôi nghĩ rằng việc xây dựng, sau đó cài đặt sẽ đau đớn hơn một chút.

1
Vui lòng xem phiên bản Node.js đang được cài đặt bằng cách sử dụng apt-getvà sau đó so sánh phiên bản này với phiên bản hiện tại của Node.js và bạn sẽ biết lý do tại sao tôi không đề xuất sử dụng apt-get... ;-)
Golo Roden

Tôi đã tạo một số tarball được biên dịch sẵn có thể được sử dụng trên Raspberry Pi nếu bạn không thực sự muốn đợi nguồn biên dịch. gist.github.com/3245130
Adam MW

1

Tất cả những gì bạn làm là gõ vào

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

Nó hoạt động với tôi và tôi đã có thể cài đặt nó mà không có lỗi và nó sẽ hoạt động với một chương trình!


1
Xin nói chính xác hơn: bạn đã cài đặt phiên bản nút nào theo cách này, nguồn gói là gì (bạn đã thêm cái mới chưa?), Bạn đã cài đặt hệ điều hành nào, bạn có phiên bản rPi nào, vòm nút nào ( armv6, v7). Bạn trả lời có thể giải quyết một cái gì đó nhưng chúng tôi không biết những gì sẽ không ai sử dụng nó.
bosch

0

Hãy cố gắng theo dõi bài này . Tôi quản lý để chạy npm trên / opt / node / npm, nhưng khi tôi sao chép nó vào / usr / bin / nó sẽ bỏ lỡ 'npmlog'.


CNTT nên ưu tiên bạn sao chép các bước vào câu trả lời trong khi ghi nguồn của bạn để biết thêm thông tin, trong trường hợp trang nguồn bị sập, trang bị xóa hoặc di chuyển, v.v. Ít nhất là một bản tóm tắt các nét rộng của quy trình.
Tevo D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.