ทำไมการติดตั้ง node 6.x บน Ubuntu 16.04 จึงต้องทำการติดตั้ง node 4.2.6


78

นี่เป็นขั้นตอนของฉันในการติดตั้งโหนดบน 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 --versionv4.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

รวมสำเนาของผลลัพธ์ของapt-cache policy nodejsโปรดไว้ในคำถามของคุณเป็นการแก้ไข
Thomas Ward

ความจริงที่ว่าระบบดึงเข้ามาใน NodeJS 4.x หมายความว่าคุณรันสคริปต์ที่ไม่ถูกต้องหรือที่เก็บไม่ถูกต้องในระบบ - โดยใช้ขั้นตอนที่แน่นอนที่ระบุไว้ในหน้าเว็บที่คุณเชื่อมโยงไปฉันสามารถติดตั้งล่าสุดได้ ตามที่เป็นอยู่ดังนั้นอาจมีปัญหาจำนวนหนึ่ง - หากคุณสามารถให้apt-cacheข้อมูลเพื่อให้เราเห็นว่าคอมพิวเตอร์ของคุณเห็นสิ่งที่มีอยู่ใน repos เราอาจช่วยได้มากขึ้น
Thomas Ward

@ThomasW - เพิ่มข้อมูลในการโพสต์
user1063287

1
ขอบคุณสำหรับข้อมูลที่อัพเดท ดูเหมือนว่าสคริปต์ไม่ได้ทำในสิ่งที่ควรจะทำด้วยเหตุผลใดก็ตาม ฉันมีรายละเอียดว่าเป็นกรณีนี้และวิธี 'คู่มือ' เพื่อทำสิ่งที่สคริปต์กำลังทำอยู่ในคำตอบของฉันด้านล่าง คุณสามารถใช้สิ่งนั้นเพื่อรับรุ่นล่าสุดจาก NodeJS มันไม่ได้ดีและง่ายเหมือนสคริปต์ แต่จริงๆแล้วมันเป็นสิ่งที่สคริปต์ทำในแก่นของมัน
Thomas Ward

1
@pipe โชคดีที่มีคนอย่างฉันที่เรียกใช้สคริปต์ใน VM ที่ไม่สามารถทำลายได้เพื่อให้เราเห็นว่ามันกำลังทำอะไรอยู่ นั่นเป็นวิธีที่ฉันได้รับคำแนะนำในคำตอบของฉันดังนั้นเราสามารถทำสิ่งที่ 'สคริปต์' ทำด้วยตัวเองเหรอ
Thomas Ward

คำตอบ:


136

สาเหตุหลักคือสคริปต์การตั้งค่าไม่ทำงานอย่างถูกต้อง ดังนั้นด้วยข้อมูลที่อัปเดตจาก OP ซึ่งสนับสนุนสิ่งนี้ข้อมูลจากที่เก็บ NodeSource จึงไม่เคยถูกมองเห็นaptเพราะสคริปต์ไม่ได้รับการกำหนดค่าอย่างเหมาะสม

ดังนั้นสคริปต์อาจไม่พบการแจกจ่ายของคุณหรืออาจเกิดความสับสนเมื่อกำหนดค่าที่เก็บหรืออาจมีการขัดจังหวะเครือข่ายหรือสาเหตุหนึ่งพันสาเหตุที่ถูกขัดจังหวะและไม่ทำงาน

ข้อเท็จจริงที่คุณเห็น4.xการติดตั้งเวอร์ชันหมายความว่าสคริปต์ทำงานได้ไม่ถูกต้องดังนั้นสคริปต์ไม่จำเป็นต้องผิดพลาด นี่หมายถึงว่าเราต้องทำสิ่งนี้ให้หนักขึ้น

ฉันควรชี้ให้เห็น: สคริปต์ไม่ได้ทำการติดตั้งใด ๆ จริง ๆ ทั้งหมดก็คือการกำหนดเวอร์ชัน Debian / Ubuntu ที่คุณใช้งานอยู่และกำหนดค่าที่เก็บเพื่อให้ได้รับข้อมูล ส่วนการติดตั้งเป็นsudo apt-get installขั้นตอนที่คุณดำเนินการด้วยมือ


แทนที่จะพึ่งพาสคริปต์เราสามารถทำสิ่งที่สคริปต์กำลังทำแบบโรงเรียนเก่า: ด้วยตนเองตั้งค่าที่เก็บและติดตั้ง 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_6.xด้วยnode_7.xหรือnode_8.xเป็นต้นสำหรับรุ่นโหนดที่ใหม่กว่า)

  2. ดาวน์โหลดคีย์ลงนามจีพีจีจาก Nodesource สำหรับพื้นที่เก็บข้อมูล มิฉะนั้นคุณอาจได้รับNO_PUBKEYข้อผิดพลาดด้วยapt-get update(ใช้wgetในคำสั่งนี้หากcurlไม่ได้ติดตั้งและหากไม่ได้ติดตั้งไว้ให้ติดตั้งหนึ่งในนั้น):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. sudo apt-get updateทำงานด้วยตนเอง

    สิ่งนี้รีเฟรชข้อมูลจาก repo ของ nodesource ดังนั้นจึง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 คุณ น่าจะดี)


4
ติดตามสิ่งนี้ไปที่ T และทุกจุดตรงกับพฤติกรรมที่อธิบายไว้ ขอบคุณมาก.
user1063287

1
@ user1063287 ยินดีต้อนรับ! หวังว่านี่จะช่วยผู้อื่นได้ถ้าสคริปต์ไม่ได้ผลสำหรับพวกเขาเช่นกัน! สนุกกับการใช้ NodeJS ล่าสุด!
Thomas Ward

โอ้ดังนั้นนั่นเป็นเหตุผลว่าทำไมฉันถึงไม่มีโหนด 6 เมื่อฉันคิดว่าฉันทำและโปรแกรมบ่นว่าฉันต้องการเวอร์ชัน 6 ขอบคุณ!
แมว

ขอบคุณทำงานได้ดีฉันสังเกตเห็นว่าฉัน/etc/apt/sources.list.d/nodesource.listมีความคิดเห็นเกี่ยวกับมันถูกปิดใช้งาน - ยังมีรุ่นเก่า 0.x ในนั้นและฉันอยู่ที่ 4.x กับโหนด -v คำแนะนำที่ชัดเจนดี
DaveStSomeWhere ที่

1
ระบุว่าขดไม่ได้ติดตั้งโดยค่าเริ่มต้นอีกทางเลือกหนึ่งคือการใช้ wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw

38

ฉันมีโหนดรุ่นเก่ากว่า สิ่งที่ฉันต้องทำคือกำจัดสิ่งเก่า:

sudo apt-get purge nodejs npm

จากนั้นแทนที่ 6 in v=6ด้วย 7, 8, 9 ตามต้องการสำหรับเวอร์ชันที่เกี่ยวข้อง (ดูคำแนะนำในการติดตั้งอย่างเป็นทางการ ):

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

(ให้แน่ใจว่าคุณได้ติดตั้ง curl)

และในที่สุด

sudo apt-get install -y nodejs

Boom, โหนดเวอร์ชันล่าสุด


4
หรือhttps://deb.nodesource.com/setup_7.xสำหรับโหนด v7 ดูคำแนะนำอย่างเป็นทางการ
ryenus

2
Mine ยังคงติดตั้ง v4.2.6
Freek Nortier

1
@FreekNortier ผมยังมีปัญหานี้อยู่บนลินุกซ์มิ้นท์ 18. ผมสามารถที่จะติดตั้งรุ่น 11 sudo apt-get install python-software-propertiesหลังจากการกวาดล้างและทำงาน ฉันพบนี้ suggestionon tecadminและcodebind
เบ็น

4

สำหรับผู้ใช้เวอร์ชัน Ubuntu 16.04.2 (เปลี่ยนเล็กน้อยจาก Thomas'post และขอบคุณสำหรับเขา)

1. เปิดตัวอัปเดตซอฟต์แวร์

2.setting

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

6sudo apt-get update

7. apt-cache policy nodejs// เพื่อรับตารางเวอร์ชั่นใหม่และตรวจสอบว่าแหล่งข้อมูลนั้นได้ทำการติดตั้งเรียบร้อยแล้วหรือไม่

8sudo apt install nodejs

9nodejs --version

ตอนนี้มันพร้อมแล้วทั้งหมด .......

คำเตือน: อย่าเปลี่ยนไดรเวอร์เริ่มต้นของ Linux สำหรับการ์ด nvidia ของคุณจากพาเนล updater .... ระบบจะล่ม .... !!!


มันติดตั้ง v4.2.6
Prashant Prabhakar Singh เมื่อ

ดี! ทำงานให้ฉัน
ejaenv

3

ฉันมีปัญหาเดียวกัน แต่ในกรณีของฉันฉันต้องอัพเกรดคำสั่ง 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

แก้ไขปัญหา
SadeepDarshana

1

โดยการเพิ่ม @Thomas Ward ตอบผู้ที่ประสบปัญหาในการติดตั้ง nodejs 8.x ด้วย https URL หรือรหัสที่ติดตั้งไว้ v4.2.6 โดยแสดงข้อผิดพลาดใบรับรองลองเพิ่ม nodeource.list ด้วยบรรทัดด้านล่าง

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

ขั้นตอนถัดไป: เรียกใช้

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

แล้วก็

sudo apt-get install -y nodejs

สิ่งนี้จะแก้ปัญหาของคุณโดยการติดตั้ง nodejs ที่ได้รับการปรับปรุงและเวอร์ชั่น npm เนื่องจากมันได้รับการแก้ไขสำหรับ Ubuntu 16.04 LTS ...


0

ฉันพบลิงค์นี้และช่วยฉันในการติดตั้ง Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x ฉันต้องเข้าร่วม Nojs8https ในบรรทัดนั้นเพราะมันบอกว่าฉันต้องเป็นระดับที่สองเพื่อโพสต์ลิงก์มากกว่าสองลิงก์ ฉันคิดว่ามันเป็นแบบสุ่ม แต่ไม่ว่าอะไรก็ตาม

ก่อนทำการติดตั้งฉันรันคำสั่ง: apt-get remove --purge version nodejs

หากต้องการตรวจสอบว่าคุณไม่ได้ติดตั้งเวอร์ชันใด ๆ ให้รัน: apt-cached policy nodejs และหรือ nodejs --version

ฉันสามารถติดตั้ง Node js 8 ได้โดยเพียงแค่เปลี่ยน 7 เป็น 8 และฉันก็ลงเอยด้วยรุ่น 8.1.3 ในการทำเช่นนั้นฉันรันคำสั่งที่อยู่ในหน้านั้นฉันโพสต์ด้านบน แต่นี่คือคำสั่งที่ยังมีอยู่:

ดาวน์โหลดคีย์ที่เก็บด้วย:

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

จากนั้นตั้งค่าที่เก็บ ::

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

อีกครั้งถ้าคุณต้องการโหนด js 8 คุณสามารถเปลี่ยนหมายเลข 7 ในบรรทัดคำสั่งนั้นเป็น 8 และ voila!


0

ฉันพยายามทำตามคำแนะนำในhttps://github.com/nodesource/distributionสำหรับรุ่น 8 แต่ไม่ได้ผลสำหรับฉัน ผมเข้าเยี่ยมชมhttps://deb.nodesource.com/setup_8.xโดยตรงในเบราว์เซอร์และคัดลอกและวางสคริปต์ลงในไฟล์บนระบบของฉันnodejs.sh จากนั้นฉันก็ดำเนินการคำสั่งต่อไปนี้

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

คำสั่ง apt-cache แสดงสองเวอร์ชันพร้อมกับการกำหนดค่าตามความชอบสำหรับการติดตั้ง 8 คุณสามารถลบไฟล์ติดตั้งหลังจากนั้น ไม่แน่ใจว่าทำไมการคัดลอกไฟล์ที่ช่วยภายในเครื่องเนื่องจากคำสั่ง curl แสดงสคริปต์อย่างถูกต้อง


0

สวัสดีถ้าคุณใช้ Ubuntu 16 ลองทำตามคำแนะนำนี้ มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉันนอกจากนี้ยังให้รหัสผ่านบัญชีของคุณเมื่อใดก็ตามที่ถูกถามในกระบวนการนี้

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

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

  3. sudo apt-get update

  4. apt-cache policy nodejs ตรวจสอบว่าเวอร์ชันที่แสดงมีโหนด 8

  5. sudo apt-get install nodejs

  6. nodejs -v ตรวจสอบเวอร์ชันของโหนดที่ติดตั้ง

สิ่งนี้จะต้องติดตั้ง nodejs เวอร์ชัน 8 บนระบบของคุณสำเร็จ หากคุณต้องการรุ่นอื่น ๆ ให้เปลี่ยนรุ่นในขั้นตอนที่ 1 และ 2 มันจะทำงานได้สำเร็จ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.