nodejs vs nút trên Ubuntu 12.04


363

Tôi đã cài đặt nodejs trên ubfox từ hướng dẫn được đưa ra ở đây

Khi tôi viết node --versiontrong terminal tôi thấy điều này:
-bash: /usr/sbin/node: No such file or directory

Tôi có thể thấy nút trong /usr/sbin/thư mục, mặc dù.

Viết npm --versionchương trình 1.3.5
Viết nodejs --versionchương trìnhv0.10.15

Ngoài ra, tôi có thể thấy nút trong /usr/bin/thư mục.

Vì vậy, làm thế nào để tôi nodelàm việc?

Ngoài ra, nếu tôi sử dụng zsh thay vì bash, thì nodelệnh hoạt động.


1
Nếu "bạn thấy nút trong / usr / bin /", thì đầu ra của nó là ls -l /usr/bin/nodegì?
randunel

1
@randunel Tôi đã nhận được sản phẩm nàylrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin

Bạn đã thực hiện bất kỳ thay đổi cho vỏ RC?
randunel

Điều này trông giống như một vấn đề shell sau khi chỉnh sửa của bạn, export | grep PATHđầu ra khi không sử dụng là zshgì? (cần in /usr/bintrong số những thứ khác)
randunel

1
giải pháp + giải thích tại đây: stackoverflow.com/questions/21168141/ từ
throbi

Câu trả lời:


599

Bạn cần phải tự tạo một liên kết tượng trưng /usr/bin/node. Phím tắt cho shell tương thích bash:

sudo ln -s `which nodejs` /usr/bin/node

Hoặc nếu bạn sử dụng hệ vỏ không chuẩn, chỉ cần mã hóa đường dẫn bạn tìm thấy bằng which nodejs:

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

Chỉnh sửa sau

Tôi tìm thấy lời giải thích này trong liên kết bạn đã đăng

Có một xung đột đặt tên với gói nút (Chương trình nút vô tuyến gói nghiệp dư) và nhị phân nodejs đã được đổi tên từ nút thành nodejs. Bạn sẽ cần symlink / usr / bin / node đến / usr / bin / nodejs hoặc bạn có thể gỡ cài đặt Chương trình nút radio vô tuyến gói nghiệp dư để tránh xung đột đó.

Sau này chỉnh sửa

Đã được một lúc kể từ khi tôi trả lời điều này. Mặc dù giải pháp tôi đã đăng lên đây đã làm việc cho tôi nhiều lần, nhưng người dùng đã báo cáo thêm một vài giải pháp trong các nhận xét:

Từ @ user229115

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Từ AskUbfox (người dùng leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

Được chứ! Mặc dù, nếu tôi sử dụng zsh, thì nodelệnh hoạt động.
Jatin

1
Ngoài ra, làm cách nào để gỡ cài đặt chương trình Node Radio Radio Amster? Tôi đã thử sudo apt-get remove nodenhưng nó nóiPackage node is not installed, so not removed
Jatin

Bạn không cần phải gỡ cài đặt nó, sau khi nhận xét của bạn, đây có vẻ như là một vấn đề về vỏ, không phải là vấn đề gói nút.
randunel

Câu trả lời của @ randunel không hiệu quả với tôi vì /usr/bin/env nodesẽ không hiệu quả. Giải pháp của BennyMcBenBen đã hoạt động
francoisrv

2
Câu trả lời của @ Tino là đúng, xem nodejs-legacymô tả của gói. Câu trả lời được liên kết bởi @BennyMcBenBen cũng đã được cập nhật với các hướng dẫn tương tự.
tricasse

88

Tôi nghĩ rằng đây là nó:

sudo update-thay thế --install / usr / bin / nút nút / usr / bin / nodejs 10

Sử dụng các lựa chọn thay thế Debian.


3
Đây có vẻ là tùy chọn tốt hơn câu trả lời được chấp nhận vì nó không thay đổi thủ công thư mục / usr / bin / và đang sử dụng cơ sở hạ tầng cho các lệnh thay thế
Dominik Fretz

Không thử nó, nhưng tôi đã xem các update-alternativetài liệu. Nếu nó thực sự hoạt động, thì đó là một giải pháp tốt hơn :)
randunel

3
bạn có thể cụ thể hơn như những gì nó đang làm?
bcorso

@DominikFretz meh. Kết quả cuối cùng hoàn toàn giống nhau khi sử dụng lệnh dành riêng cho Debian so với lệnh tuân thủ POSIX. (Bạn có thể đã làm update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) Với mỗi người của anh ấy, nhưng tôi thích đơn giản hơn ln.
kojiro

2
Tôi đã phải source ~/.bashrclàm điều này để có hiệu lực
iN Khoa

64

Rõ ràng giải pháp khác nhau giữa các phiên bản Ubuntu. Sau đây làm việc cho tôi trên Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Chỉnh sửa: Quy tắc của ngón tay cái:

Nếu bạn đã cài đặt nodejsnhưng thiếu /usr/bin/nodenhị phân, thì cũng cài đặt nodejs-legacy. Điều này chỉ tạo ra các liên kết mềm bị thiếu.

Theo các thử nghiệm của tôi, Ubuntu 17.10 trở lên đã có sẵn liên kết mềm tương thích /usr/bin/nodesau khi nodejsđược cài đặt, do đó, nodejs-legacythiếu các bản phát hành này vì nó không còn cần thiết nữa.


có vẻ như nodejs-legacy không được duy trì nữa. bản dựng mới nhất dừng tại 2013-04-10
francoisrv

8
nodejs-legacykhông cần bảo trì nhiều. Nó chỉ thêm một liên kết mềm tương tự sudo ln -s nodejs /usr/bin/node, ít nhất là trên LTS 14.04
Tino

4
Trên Ubuntu 14.04, nodejs và nodejs-legacy cài đặt cùng một phiên bản của Node (0.10.25). +1 cho @Tino.
Đánh dấu E. Haase

Làm việc cho tôi trong Debian Jessie là tốt. Đây phải là câu trả lời được chấp nhận vì đây là cách mọi thứ có ý nghĩa. Chỉ những người sử dụng gói radio nghiệp dư không nên làm điều này. Tôi tự hỏi tại sao họ không đổi tên gói radio giống như họ đã làm với crom-bsu.
Jérôme

Điều này sẽ dẫn đến 2 trường hợp nút trên hệ thống của bạn và điều này không còn được duy trì ... Thay vào đó, bạn nên liên kết với nodejs.
PodTech.io

30

Tôi có vấn đề tương tự trong Ubuntu 14.04.

Tôi đã cài đặt "nodejs" và nó hoạt động, nhưng chỉ khi tôi sử dụng lệnh "nodejs". Nếu tôi cố gắng sử dụng "nút" thì không có gì xảy ra.

Tôi đã khắc phục vấn đề này theo cách tiếp theo:

  1. Cài đặt nodejs-legacy

    sudo apt-get cài đặt nodejs-legacy

Sau đó, khi tôi gõ "nút" trong dòng lệnh, tôi nhận được thông báo lỗi "/ usr / sbin / nút: Không có tệp hoặc thư mục như vậy"

  1. Thứ hai, những gì tôi đã làm, đó là một liên kết tượng trưng trên "nodejs":

    sudo ln -s / usr / bin / nodejs / usr / sbin / nút

4
Có điều gì đó kỳ lạ trên hệ thống của bạn. nodeđược cho là được cài đặt vào /usr/bin/và không /usr/sbin/. Có vẻ đối với tôi như thể bạn đã cài đặt Ubuntu nodegói từ hamradio trước (xem packages.ubuntu.com/trusty/all/node/filelist ) và quên để chạy hash -rvào mức độ vỏ, như vậy mà vỏ vẫn nhớ con đường sai lầm. Cái thứ hai cũng lncố định, nhưng nó không còn cần thiết nữa sau khi bạn rời cái vỏ đó.
Tino

BTW, ngay cả câu trả lời sai cũng tốt để giải thích tất cả các rắc rối do ba gói tất cả các tên rất giống nhau: node( /usr/sbin/nodecho một cái gì đó hoàn toàn khác nhau), nodejs( /usr/bin/nodejs) và nodejs-legacy( /usr/bin/node, phụ thuộc vào gói nodejs).
Tino

Điều này cũng xảy ra với tôi. Tôi đã cài đặt nút từ nguồn một thời gian trước. node -v => 0.10.2trong khi nodejs -v => 5.5.0. Chạy lệnh which nodeluôn luôn chỉ đến cài đặt cục bộ này. Cuối cùng, tôi đã phải unset NODE_PATHchỉ vào bản cài đặt cục bộ để sửa nó. Sau này, node -v => 5.5.0npm install bắt đầu làm việc cho các gói tùy thuộc vào Node => 5.0.
CHsurfer

11

Điều này cũng xảy ra với tôi.

node -v => 0.10.2
nodejs -v => 5.5.0

Vấn đề là tôi đã cài đặt nút từ nguồn một thời gian trước. Đang chạy

which node

luôn luôn chỉ đến cài đặt cục bộ này. Cũng thế,

echo NODE_PATH

chỉ vào cài đặt cục bộ.

xóa thư mục với cài đặt nguồn không giúp đỡ. Nó chỉ phá vỡ lệnh nút. Cuối cùng, việc bỏ đặt biến môi trường NODE_PATH và thanh lọc sau đó cài đặt lại nodejs đã thực hiện thủ thuật.

unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

Sau đây,

node -v => 5.5.0

và cài đặt npm bắt đầu hoạt động cho các gói tùy thuộc vào Node => 5.0.


Điều này làm việc cho tôi. Quá tệ, tôi đã loay hoay trong một giờ trước khi tìm thấy nó.
Kẻ lừa đảo Dustin

11

Trình quản lý phiên bản nút (nvm)

Nếu bạn muốn cài đặt nhiều phiên bản nodejs và dễ dàng chuyển đổi giữa chúng, tôi khuyên bạn nên sử dụng Node Version Manger . Nó cũng giải quyết vấn đề đặt tên ( nodevs nodejs)

Nó khá đơn giản:

Cài đặt phiên bản nodejs:

$ nvm install 4.4

Bây giờ bạn có nodejs 4.4 ngoài phiên bản đã được cài đặt và bạn chỉ có thể sử dụng nodelệnh để tiếp cận phiên bản mới được cài đặt:

$ node -v    // The new version added by nvm.
v4.4.5
$ nodejs -v  // The OS version is untouched and still available.
v0.10.25

Bạn có thể cài đặt thêm các phiên bản nodejs và dễ dàng chuyển đổi giữa chúng:

$ nvm install 6.2
$ nvm use 6.2
Now using node v6.2.1 (npm v3.9.3)
$ node -v
v6.2.1
$ nvm use 4.4
Now using node v4.4.5 (npm v2.15.5)

2
Đó là giải quyết vấn đề của tôi, cảm ơn rất nhiều, tôi tìm thấy một số lệnh hữu ích cho nvmtrên Làm thế nào để cài đặt Node.js trên một máy chủ Ubuntu 14.04
Huy Nguyễn

1
Điều này làm việc cho tôi. Ngoài ra một hướng dẫn có sẵn ở đây: digitalocean.com/community/tutorials/ từ
Koen Cornelis

10

Tôi chưa quen với tất cả những điều này, nhưng đối với tôi, một bí danh đơn giản đã hoạt động:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

ít nhất là để chạy mọi thứ trực tiếp trong bash và thực thi các tệp .js.


Làm việc mà không có rlwrap. Cảm ơn!
Shurik

Cảm ơn @Phill, bạn thật tuyệt vời!
Yusril Herlian Syah

9

Làm thế nào về việc sử dụng các hướng dẫn chính thức từ trang web nodejs :

Đối với v7:

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

Đối với câu 6:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Đối với v4:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Tôi đã thử nghiệm những thứ này từ Windows bash (thông qua hệ thống con cho Linux - 14.04) và raspbian (dựa trên ARM Debian). Chạy sudo apt-get install -y nodejsmà không chạy tập lệnh thiết lập trước sẽ dẫn đến việc bạn nhận được nút 0.10.

Nếu bạn đang dự định cài đặt các mô-đun npm gốc yêu cầu xây dựng, hãy chạy:

sudo apt install -y build-essential

Lưu ý: đây là đường dẫn được đề xuất cho mọi phân phối dựa trên Debian trên tất cả các kiến ​​trúc.


7

Thêm vào câu trả lời đúng của @ randunel (chưa thể nhận xét về SO):

Tôi cũng đã phải symlink / usr / local / bin / node đến / usr / bin / nodejs.

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

Rõ ràng, điều này đã ghi đè lệnh / usr / bin / nút.

Không biết làm thế nào mà nó được thiết lập, nhưng hy vọng nó sẽ giúp người khác vì đó là một nỗi đau để tìm ra lý do tại sao những điều trên không làm việc cho tôi.


7

Trả lời muộn, nhưng để biết thông tin cập nhật ...

Nếu bạn cài đặt node.js bằng phương thức đề xuất từ readme cài đặt nút github , nó sẽ gợi ý làm theo các hướng dẫn trên bài viết blog của nodeource , thay vì cài đặt từ ngày hết hạn apt-get repo, node.js sẽ chạy bằng nodelệnh, cũng như nodejslệnh, mà không cần phải tạo một liên kết tượng trưng mới.

Phương pháp này từ bài viết là:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

Lưu ý rằng đây là phiên bản v0.12, có thể sẽ trở nên lỗi thời trong tương lai không xa.

Ngoài ra, nếu bạn đứng sau proxy công ty (như tôi), bạn sẽ muốn thêm tùy chọn -E vào lệnh sudo, để duy trì các env vars cần thiết cho proxy:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -


7

Điều này làm việc cho tôi:

alias node=nodejs

Sau khi làm theo các hướng dẫn trong liên kết này .


4

Nếu bạn đang sử dụng phiên bản AWS EC2 chạy phiên bản Ubuntu (đã thử nghiệm trên Ubuntu 16.x), thì các bước này có thể phù hợp với bạn:

    sudo apt-get cập nhật
    sudo apt-get --purge loại bỏ nút -y
    sudo apt-get --purge loại bỏ nodejs -y
    sudo apt-get --purge xóa di sản-nút -y
    sudo rm / usr / bin / nút
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get cài đặt nodejs -y
    nút -v

Nếu tất cả đều đúng, lệnh cuối cùng sẽ có đầu ra như: v6.xx

Nếu không thì chạy như sau:

    sudo ln -s / usr / bin / nodejs / usr / bin / nút

Hy vọng điều này sẽ giúp. Nó giúp tôi một cách kỳ diệu (hehe).


3

Tôi đã có cùng một liên kết tượng trưng giúp tôi thoát ra: sudo ln -s / usr / bin / nodejs / usr / bin / nút sau khi sudo npm cài đặt -g ph Phantomjs-prebuilt

diễn ra suôn sẻ


2

Cách tốt nhất để cài đặt nodejs là thông qua NVM (Trình quản lý phiên bản nút)

Xóa các phiên bản trước:

$ sudo apt-get nút thanh lọc
$ sudo apt autoremove

Đồng thời xóa tất cả node_modules bằng $ sudo rm -rf node_modulestrong thư mục chứa thư mục này.

Node & Nodejs về mặt kỹ thuật là điều tương tự. Chỉ cần đặt tên thay đổi.

Đầu tiên Cài đặt hoặc cập nhật nvm

chạy bằng root

$ sudo su 

Sau đó

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | bash

HOẶC LÀ

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

Kiểm tra nvm đến đường dẫn

$ nguồn ~ / .profile
$ nvm ls-remote

nếu bạn gặp lỗi liên quan đến danh sách thì hãy cài đặt git.

$ sudo apt-get cài đặt git

Chạy lại:

$ nvm ls-remote
HOẶC LÀ
$ sudo nvm ls-remote

$ nvm cài đặt phiên bản bạn yêu cầu 

Phiên bản kiểm tra

# nút đảo ngược
nvm sử dụng phiên bản bạn yêu cầu

KHÓA HỌC THÔNG TIN:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps


1

Tôi đã tạo một liên kết tượng trưng, ​​nhưng nó vẫn không hoạt động.

Tôi quên khởi động lại thiết bị đầu cuối của mình (kết nối putty của tôi). Sau khi tôi đã làm việc mà không có symlink :)


1

Sẽ hữu ích cho người mới bắt đầu tuyệt đối

Mặc dù, bạn đã có câu trả lời, chỉ muốn chỉ ra rằng nodelệnh (không có bất kỳ tham số nào) sẽ bắt đầu nút trong chế độ REPL read-eval-print-loop để thực thi mã javascript thô.

Một cách khác để sử dụng nodelệnh là cung cấp cho nó một jstệp làm tham số. Đây là cách chúng tôi chủ yếu sử dụng nó.


0

Tùy chọn để loại bỏ nút và nút hiện tại, nhưng phải cài đặt xen kẽ các nút 7.x mới nhất.

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

0

Chỉ cần sử dụng NVM (Trình quản lý phiên bản nút) - https://github.com/creationix/nvm

Nó đã trở thành tiêu chuẩn để quản lý Node.js.

Khi bạn cần một phiên bản mới:

nvm install NEW_VER
nvm use XXX

Nếu có lỗi xảy ra, bạn luôn có thể quay lại với

nvm use OLD_VER


0

https://nodejs.org/en/doad/

Download .pkg file on your mac and install it. it directly works.

  ~ which node
/usr/local/bin/node
  ~ node --version
v10.11.0
  ~ which npm
/usr/local/bin/npm
  ~ npm --version
6.4.1
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.