Tại sao cài đặt nút 6.x trên Ubuntu 16.04 thực sự cài đặt nút 4.2.6?


78

Đây là các bước của tôi để cài đặt nút trên Ubuntu 16.04:

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

đó là những hướng dẫn chính thức:

https://nodejs.org/en/doad/package-manager/#debian-and-ubfox-basing-linux-distribution

Sau khi làm điều này, chạy nodejs --versiontrở lại v4.2.6.

Khi tôi sử dụng, setup_6.xtôi đã giả sử một phiên bản bắt đầu bằng 6sẽ được cài đặt?

Tôi nghĩ có lẽ setup_6.xnên như vậy setup_6.2.1, nhưng trang đó trả về 404, xem:

https://deb.nodesource.com/setup_6.x (có một trang ở đó)

https://deb.nodesource.com/setup_6.2.1 (trả về 404)

Làm cách nào để cài đặt phiên bản nút ổn định mới nhất trên Ubuntu 16.04?

Biên tập:

Đây là kết quả sau khi chạy sudo apt-get install -y nodejs:

sudo apt-get install -y nodejs 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libboost-python1.58.0 libjs-inherits libjs-node-uuid libjs-underscore
  libssl-dev libssl-doc libuv1-dev linux-headers-4.4.0-18
  linux-headers-4.4.0-18-generic linux-headers-4.4.0-21
  linux-headers-4.4.0-21-generic linux-image-4.4.0-18-generic
  linux-image-4.4.0-21-generic linux-image-extra-4.4.0-18-generic
  linux-image-extra-4.4.0-21-generic linux-signed-image-4.4.0-18-generic
  linux-signed-image-4.4.0-21-generic python-configobj python-pycurl
  python-pyexiv2 python-pyexiv2-doc
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  nodejs
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Need to get 0 B/3,162 kB of archives.
After this operation, 13.2 MB of additional disk space will be used.
Selecting previously unselected package nodejs.
(Reading database ... 329473 files and directories currently installed.)
Preparing to unpack .../nodejs_4.2.6~dfsg-1ubuntu4_amd64.deb ...
Unpacking nodejs (4.2.6~dfsg-1ubuntu4) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.7.5-1) ...
Setting up nodejs (4.2.6~dfsg-1ubuntu4) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode

Biên tập:

Kết quả của apt-cache policy nodejs:

apt-cache policy nodejs
nodejs:
  Installed: 4.2.6~dfsg-1ubuntu4
  Candidate: 4.2.6~dfsg-1ubuntu4
  Version table:
 *** 4.2.6~dfsg-1ubuntu4 500
        500 http://au.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        100 /var/lib/dpkg/status

Bao gồm một bản sao của đầu ra apt-cache policy nodejsxin vui lòng vào câu hỏi của bạn dưới dạng chỉnh sửa.
Thomas Ward

Thực tế là hệ thống được kéo trong NodeJS 4.x có nghĩa là bạn đã chạy các tập lệnh không chính xác hoặc kho lưu trữ không được thêm chính xác vào hệ thống - sử dụng các bước chính xác được nêu trong trang bạn liên kết đến, tôi có thể cài đặt bản mới nhất như vậy, vì vậy có thể có bất kỳ vấn đề nào - nếu bạn có thể cung cấp apt-cachedữ liệu để chúng tôi có thể thấy những gì máy tính của bạn thấy tồn tại trong repos, chúng tôi có thể giúp bạn thêm.
Thomas Ward

@ThomasW. - Thêm dữ liệu để đăng.
dùng1063287

1
Cảm ơn các dữ liệu cập nhật. Có vẻ như kịch bản đã không làm những gì nó được cho là vì lý do gì. Tôi nói chi tiết rằng đây là trường hợp và cách 'thủ công' để làm những gì kịch bản đang làm, trong câu trả lời của tôi dưới đây. Bạn có thể sử dụng điều đó để có được phiên bản mới nhất từ ​​NodeJS. Nó không hay và dễ như kịch bản, nhưng đó thực sự là những gì kịch bản làm cốt lõi.
Thomas Ward

1
@pipe Rất may có những người như tôi chạy các kịch bản trong các máy ảo có thể phá hủy để chúng ta có thể thấy những gì nó đang làm. Đó là cách tôi rút ra các hướng dẫn trong câu trả lời của mình, vì vậy chúng tôi có thể làm những gì mà 'kịch bản' thực hiện thủ công heh.
Thomas Ward

Câu trả lời:


136

Lý do cốt lõi là tập lệnh thiết lập không chạy chính xác. Do đó, nhờ dữ liệu được cập nhật từ OP hỗ trợ điều này, dữ liệu từ kho lưu trữ NodeSource không bao giờ được nhìn thấy bởi aptvì nó không được cấu hình đúng bởi tập lệnh.

Do đó, tập lệnh có thể không tìm thấy bản phân phối của bạn hoặc có thể nó đã bị rối khi định cấu hình kho lưu trữ hoặc có thể đã bị gián đoạn mạng hoặc bất kỳ lý do nào trong số hàng ngàn lý do bị gián đoạn và không thực hiện được.

Thực tế là bạn đang thấy phiên bản 4.xđược cài đặt có nghĩa là tập lệnh không thực hiện đúng chức năng của nó, vì vậy tập lệnh không nhất thiết là có lỗi. Điều này chỉ có nghĩa là chúng ta phải có khả năng làm điều này một cách khó khăn hơn.

Tôi nên chỉ ra: tập lệnh thực sự không thực hiện bất kỳ cài đặt nào - tất cả những gì nó làm là xác định phiên bản Debian / Ubuntu bạn đang bật và định cấu hình kho lưu trữ để nó lấy dữ liệu. Phần cài đặt thực sự là sudo apt-get installbước bạn chạy bằng tay.


Thay vì dựa vào tập lệnh, chúng ta có thể thực hiện những gì tập lệnh đang thực hiện theo cách cũ: tự tay, thiết lập cấu hình kho lưu trữ và cài đặt NodeJS.

Đây là cách thủ công để thực hiện công việc này và về cơ bản đó là tập lệnh thực hiện (ngoại trừ Bước 4, để đảm bảo bạn đang nhận được dữ liệu phiên bản chính xác):

  1. Tạo một tệp mới: /etc/apt/sources.list.d/nodesource.list

    Bạn sẽ cần tạo tệp này với sudo, nhưng khi bạn tạo tệp, hãy đặt tệp này vào trong đó:

    deb https://deb.nodesource.com/node_6.x xenial main
    deb-src https://deb.nodesource.com/node_6.x xenial main
    

    Sau đó, lưu tệp. (thay thế node_6.xbằng node_7.xhoặc node_8.x, v.v. cho các phiên bản Node mới hơn)

  2. Tải xuống Khóa ký GPG từ Nodesource cho kho lưu trữ . Mặt khác, bạn có thể gặp NO_PUBKEYlỗi với apt-get update(sử dụng wgettrong lệnh này nếu curlkhông được cài đặt và nếu không được cài đặt, hãy cài đặt một trong số chúng):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. Tự chạysudo apt-get update .

    Điều này làm mới dữ liệu từ repo của nguồn cung cấp để aptbiết có phiên bản mới hơn tồn tại.

    Nếu bạn gặp NO_PUBKEYlỗi GPG, hãy quay lại Bước 2

  4. Kiểm tra apt-cache policy nodejsđầu ra.

    Điều này không được thực hiện bởi tập lệnh, nhưng bạn muốn chắc chắn rằng bạn thấy một mục có nội dung giống như thế này trong đầu ra (mặc dù phiên bản có thể khác nếu bạn không sử dụng 6.x làm chuỗi phiên bản; điều duy nhất chúng tôi quan tâm là có một số phiên bản mới hơn được cung cấp qua nút nguồn):

    Version table:
        6.2.1-1nodesource1~xenial1 500
           500 https://deb.nodesource.com/node_6.x xenial/main amd64 Packages
        4.2.6~dfsg-1ubuntu4 500
           500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
    

    Nếu bạn không thấy các mục như thế này và chỉ thấy 4.2.6, hãy bắt đầu lại. Nếu không, tiến hành.

  5. Cài đặt nodejsnhị phân. Bây giờ bạn đã xác nhận 6.x có sẵn trên hệ thống của mình, bạn có thể cài đặt nó:sudo apt-get install nodejs

  6. nodejs --versionBây giờ sẽ hiển thị v6.2.1hoặc tương tự trên đầu ra (miễn là bắt đầu với v6.phiên bản 6 của bạn, đây có thể là số phiên bản cao hơn nếu bạn đang sử dụng phiên bản mới hơn 6 nhưng miễn là không phải 4.2.6 nên tốt để đi).


4
Theo dõi điều này đến T và tất cả các điểm phù hợp với hành vi được mô tả. Cảm ơn rât nhiều.
dùng1063287

1
@ user1063287 Chào mừng bạn! Hy vọng rằng điều này sẽ giúp những người khác nếu kịch bản không hoạt động cho họ! Thưởng thức bằng cách sử dụng NodeJS mới nhất!
Thomas Ward

Ồ, vậy đó là lý do tại sao tôi không thực sự có Nút 6 khi tôi nghĩ tôi làm vậy và các chương trình đang phàn nàn tôi cần phiên bản 6. Cảm ơn!
con mèo

Cảm ơn, đã làm việc rất tốt, tôi nhận thấy rằng trong /etc/apt/sources.list.d/nodesource.listđó có một nhận xét về việc nó bị vô hiệu hóa - cũng có phiên bản 0.x cũ trong đó và tôi ở mức 4.x với nút -v. Đẹp hướng dẫn rõ ràng.
DaveStSomeWhere

1
Cho rằng curl không được cài đặt theo mặc định, một cách khác là sử dụng wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw

38

Tôi đã có một phiên bản cũ hơn của nút. Tất cả những gì tôi cần làm là thanh lọc cái cũ:

sudo apt-get purge nodejs npm

Và sau đó, thay thế 6 trong v=6bằng 7, 8, 9 khi cần cho các phiên bản tương ứng (xem hướng dẫn cài đặt chính thức ):

v=6
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

(hãy chắc chắn rằng bạn đã cài đặt curl.)

Và cuối cùng,

sudo apt-get install -y nodejs

Boom, phiên bản mới nhất của nút.


4
Hoặc, https://deb.nodesource.com/setup_7.xcho nút v7. Xem hướng dẫn chính thức
ryenus

2
Mine vẫn cài đặt v4.2.6
Freek Nortier

1
@FaletNortier Tôi cũng gặp vấn đề này trên Linux Mint 18. Tôi đã có thể cài đặt phiên bản 11 sau khi xóa và chạy sudo apt-get install python-software-properties. Tôi tìm thấy gợi ý này tecadmincodebind .
Ben

4

Đối với người dùng phiên bản Ubuntu 16.04.2 (với một chút thay đổi từ Thomas'post và cảm ơn anh ta)

1. mở trình cập nhật phần mềm

2. thiết lập

3. phần mềm khác

4.Thêm các nguồn nhưng nhớ chọn tất cả các tùy chọn nguồn mới sau exp:


deb https://deb.nodesource.com/node_6.x xenial main
deb-src https://deb.nodesource.com/node_6.x xenial main

5. tải

6.sudo apt-get update

7. apt-cache policy nodejs// để lấy bảng phiên bản mới và kiểm tra xem nguồn đã được thiết lập xong chưa

số 8.sudo apt install nodejs

9.nodejs --version

BÂY GIỜ Tất cả đã được thiết lập .......

cảnh báo: không thay đổi trình điều khiển mặc định Linux cho thẻ nvidia của bạn từ bảng cập nhật .... hệ thống sẽ bị sập .... !!!


Nó cài đặt v4.2.6.
Prashant Mitchhakar Singh

đẹp! làm việc cho tôi
ejaenv

3

Tôi gặp vấn đề tương tự. Nhưng trong trường hợp của tôi, tôi đã phải nâng cấp lệnh curl của mình. Bạn có thể thấy vấn đề bằng cách chạy với tùy chọn -S.

curl -s -S https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -

Điều này cho thấy vấn đề

curl: (1) Protocol "https" not supported or disabled in libcurl
gpg: no valid OpenPGP data found.

Vì vậy, tôi đã khắc phục vấn đề này bằng cách chạy như sau.

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

đã giải quyết vấn đề
SadeepDarshana

1

Bằng cách thêm @Thomas Ward trả lời những người đang gặp vấn đề trong việc cài đặt nodejs 8.x bằng URL https hoặc mã tiếp tục cài đặt v4.2.6 bằng cách hiển thị lỗi chứng chỉ, hãy thử thêm nodeource.list với các dòng bên dưới

deb http://deb.nodesource.com/node_8.x xenial main
deb-src http://deb.nodesource.com/node_8.x xenial main

bước tiếp theo: Chạy

sudo curl -sL http://deb.nodesource.com/setup_8.x | sudo -E bash -

Sau đó

sudo apt-get install -y nodejs

Điều này sẽ giải quyết vấn đề của bạn bằng cách cài đặt phiên bản nodejs và phiên bản npm được cập nhật vì nó đã giải quyết vấn đề của tôi cho Ubuntu 16.04 LTS ...


0

Tôi đã tìm thấy liên kết này và nó giúp tôi cài đặt Nodejs8__https: //www.ub Ubuntuupdates.org/ppa/nodejs_7.x. Tôi đã phải tham gia Nojs8https trong dòng đó vì nó nói rằng tôi cần phải ở cấp độ hai để có thể đăng nhiều hơn hai liên kết. Tôi nghĩ rằng đó là ngẫu nhiên nhưng bất cứ điều gì.

Trước khi cài đặt, tôi đã chạy lệnh: apt-get remove --purge phiên bản nodejs

Để xác minh bạn không có bất kỳ phiên bản nào được cài đặt chạy: nút chính sách apt-cacheed và nodejs --version

Tôi đã có thể cài đặt Node js 8 chỉ bằng cách thay đổi 7 thành 8 và tôi đã kết thúc phiên bản 8.1.3. Để làm điều đó tôi đã chạy các lệnh trong trang đó tôi đã đăng ở trên nhưng đây là các lệnh anyways:

Tải về khóa kho với:

curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -

Sau đó thiết lập kho lưu trữ ::

sudo sh -c "echo deb https://deb.nodesource.com/node_7.x zesty main \ > /etc/apt/sources.list.d/nodesource.list"

sudo apt-get update

sudo apt-get install nodejs

Một lần nữa, nếu bạn muốn nút js 8, bạn có thể thay đổi số 7 trong dòng lệnh đó thành 8 và voila!


0

Tôi đã cố làm theo hướng dẫn trên https://github.com/nodesource/distribution cho phiên bản 8, nhưng điều đó không hiệu quả với tôi. Tôi đã truy cập https://deb.nodesource.com/setup_8.x trực tiếp trên trình duyệt và sao chép và dán tập lệnh vào một tệp trên hệ thống của tôi nodejs.sh . Sau đó, tôi đã thực hiện các lệnh sau

sudo -E bash nodejs.sh
apt-cache policy nodejs
sudo apt-get install nodejs

Lệnh apt-cache hiển thị hai phiên bản có tùy chọn cài đặt 8. Bạn có thể xóa tệp cài đặt sau đó. Không chắc chắn tại sao sao chép tệp cục bộ giúp vì lệnh curl hiển thị tập lệnh đúng.


0

Chào các bạn nếu bạn có Ubuntu 16 hãy thử hướng dẫn này. Nó hoạt động hoàn hảo với tôi. Cũng cung cấp mật khẩu tài khoản của bạn bất cứ khi nào được hỏi trong quá trình này.

  1. sudo su -c "echo 'deb https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/source.list.d/nodesource.list"

  2. sudo su -c "echo 'deb-src https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/source.list.d/nodesource.list"

  3. sudo apt-get cập nhật

  4. nút chính sách apt-cache Kiểm tra xem các phiên bản được liệt kê có nút 8 không

  5. sudo apt-get cài đặt nodejs

  6. nodejs -v kiểm tra phiên bản nút được cài đặt

Điều này sẽ cài đặt thành công nodejs phiên bản 8 trên hệ thống của bạn. Nếu bạn muốn bất kỳ phiên bản nào khác, sau đó thay đổi phiên bản ở bước 1 và 2, nó sẽ hoạt động thành công.

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.