當前位置: 首頁>>技術教程>>正文


為什麽在Ubuntu 16.04上安裝節點6.x實際安裝節點4.2.6?

, ,

問題描述

這些是我在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

這是官方說明:

https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

執行此操作後,運行nodejs --version將返回v4.2.6

當我使用setup_6.x時,我假設將安裝一個以6開頭的版本?

我想也許setup_6.x應該是setup_6.2.1,但該頁麵返回404,請參閱:

https://deb.nodesource.com/setup_6.x(那裏有一個頁麵)

https://deb.nodesource.com/setup_6.2.1(返回404)

如何在Ubuntu 16.04上安裝最新的穩定版節點?

編輯:

這些是運行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

編輯:

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

最佳解決方案

核心原因是安裝腳本無法正常運行。因此,由於來自支持此功能的OP的更新數據,apt從未看到來自NodeSource存儲庫的數據,因為腳本未正確配置它。

因此,腳本可能沒有找到您的發行版,或者在配置存儲庫時可能已經搞砸了,或者可能存在網絡中斷,或者其中任何一個原因導致其中斷並且沒有完成其工作。

您看到安裝版本4.x的事實意味著腳本無法正常工作,因此腳本不一定有問題。這隻是意味著我們必須以更難的方式做到這一點。

I should point out: the script doesn’t actually do any installing – all it does is determine the Debian/Ubuntu version you’re on, and configure the repository for it to get data from. The installation part is actually the sudo apt-get install step you ran by hand.


我們可以執行腳本執行old-school方式的操作,而不是依賴腳本:手動,自己,設置存儲庫配置並安裝NodeJS。

這是使這項工作的手動方式,它基本上是腳本的功能(步驟4除外,這是為了確保您獲得準確的版本數據):

  1. 創建一個新文件:/etc/apt/sources.list.d/nodesource.list

    您需要使用sudo創建此文件,但在創建文件時,請將其放入其中:

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

    然後,保存文件。 (對於較新的Node版本,將node_6.x替換為node_7.xnode_8.x等)

  2. 從Nodesource下載存儲庫的GPG簽名密鑰。否則,您可能會在apt-get update中收到NO_PUBKEY錯誤:

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. 手動運行sudo apt-get update。這將刷新來自nodesource repo的數據,因此apt知道存在更新的版本。如果您收到NO_PUBKEY GPG錯誤,請返回步驟2

  4. 檢查apt-cache policy nodejs輸出。

    這不是由腳本完成的,但是你想確保在輸出中看到一個類似這樣的條目(盡管如果你不使用6.x作為版本字符串,版本可能會有所不同;我們唯一的事情是關心的是通過nodesource提供的新版本號:

    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
    

    如果您沒有看到這樣的條目,隻看到4.2.6,請重新開始。否則,繼續。

  5. 安裝nodejs二進製文件。現在您的係統已經確認6.x可用,您可以安裝它:sudo apt-get install nodejs

  6. nodejs --version現在應該在輸出上顯示v6.2.1或類似產品(隻要它從v6.開始,你就是版本6;如果你使用的是比6更新的版本,這可能是更高的版本號,但隻要它不是4.2 .6你應該好好去)。

次佳解決方案

我有一個舊版本的節點。我需要做的隻是清除舊的:

sudo apt-get purge nodejs npm

然後,根據相應版本的需要,將v=6中的6替換為7,8,9(參見official installation instructions):

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

(確保你已經安裝了卷發。)

最後,

sudo apt-get install -y nodejs

Boom,節點的最新版本。

第三種解決方案

對於Ubuntu 16.04.2版本的用戶(從Thomas’post稍微改變並感謝他)

1.打開軟件更新程序

2.設置

3.其他軟件

4.添加源但記得選擇以後的所有新源選項exp:


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

5.reload

6. sudo apt-get update

7. apt-cache policy nodejs //獲取新版本表並檢查源是否已完成設置

8. sudo apt install nodejs

9. nodejs --version

現在一切都設定…….

警告:不要從更新程序麵板更改nvidia卡的Linux默認驅動程序….係統將崩潰…. !!!

第四種方案

我遇到過同樣的問題。但在我的情況下,我不得不升級我的curl命令。您可以通過使用-S選項運行來查看該問題。

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

這顯示了這個問題

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

所以我通過運行以下內容解決了這個問題。

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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/1344.html,未經允許,請勿轉載。