Node Package Manager เสียหายในบางกรณีตอนนี้ไม่สามารถติดตั้งได้


13

ฉันพบปัญหาในวันนี้เมื่อฉันตัดสินใจที่จะใช้npm update -gในไดเรกทอรีแอป nodejs นี่คือการตัดสินใจที่ไม่ดีเพราะมันจะทำให้เกิดผมที่จะใช้เป็นที่พบบ่อยและปัญหาภัยพิบัติกับ NPM

วิธีแก้ไขคือการติดตั้งใหม่ nodejs และ npm น่าเสียดายที่เมื่อฉันไปติดตั้งโดยใช้ NPM sudo apt-get install npmจะไม่ทำงาน

ข้อผิดพลาดเต็มรูปแบบใน terminal อยู่ที่นี่:

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: node-abbrev (>= 1.0.4) but it is not going to be installed
   Depends: node-ansi but it is not going to be installed
   Depends: node-archy but it is not going to be installed
   Depends: node-block-stream but it is not going to be installed
   Depends: node-fstream (>= 0.1.22) but it is not going to be installed
   Depends: node-fstream-ignore but it is not going to be installed
   Depends: node-github-url-from-git but it is not going to be installed
   Depends: node-glob (>= 3.1.21) but it is not going to be installed
   Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
   Depends: node-inherits but it is not going to be installed
   Depends: node-ini (>= 1.1.0) but it is not going to be installed
   Depends: node-lockfile but it is not going to be installed
   Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
   Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
   Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
   Depends: node-gyp (>= 0.10.9) but it is not going to be installed
   Depends: node-nopt (>= 2.1.1) but it is not going to be installed
   Depends: node-npmlog but it is not going to be installed
   Depends: node-once but it is not going to be installed
   Depends: node-osenv but it is not going to be installed
   Depends: node-read but it is not going to be installed
   Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
   Depends: node-request (>= 2.25.0) but it is not going to be installed
   Depends: node-retry but it is not going to be installed
   Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
   Depends: node-semver (>= 2.1.0) but it is not going to be installed
   Depends: node-sha but it is not going to be installed
   Depends: node-slide but it is not going to be installed
   Depends: node-tar (>= 0.1.18) 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.

ฉันจะทำอย่างไรเพื่อให้ได้รับการติดตั้ง NPM อย่างเหมาะสมและทำงานอีกครั้ง

ขอบคุณ

คำตอบ:


29

ปรับปรุง

เกี่ยวกับความคิดเห็นของ William Entriken ด้านล่างคำตอบนี้มีวิธีที่ดีกว่าในการติดตั้ง Node.js โดยกำเนิดใน Ubuntu เป็นแพคเกจสแน็ป

Node.js มีให้ในรูปแบบแพ็คเกจ snap ใน Ubuntu ทุกรุ่นที่รองรับในปัจจุบัน เฉพาะกับ Node.js นักพัฒนาสามารถเลือกจากรุ่นที่สนับสนุนในปัจจุบันหนึ่งรายการขึ้นไปและรับการอัปเดตอัตโนมัติอัตโนมัติโดยตรงจาก NodeSource ปัจจุบันมี Node.js รุ่น 6, 8, 9, 10, 11, 12 และ 13 โดย Snap Snap จะได้รับการอัปเดตภายในไม่กี่ชั่วโมงหรือไม่กี่นาทีของการเปิดตัว Node.js

โหนดสามารถติดตั้งได้ด้วยคำสั่งเดียวตัวอย่างเช่น:

sudo snap install node --classic --channel 9/stable 

โหนดสแน็ปสามารถเข้าถึงได้โดยคำสั่งnodeตัวอย่างเช่น:

$ node -v  
v9.9.0

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

sudo chown -R $ USER: $ (id -gn $ USER) / home / your-username /.config

แทนที่ your-usernameในคำสั่งข้างต้นด้วยชื่อผู้ใช้ของคุณเอง จากนั้นเรียกใช้npm -vเพื่อตรวจสอบว่ารุ่นของ npm เป็นรุ่นล่าสุดหรือไม่ จากตัวอย่างที่ฉันตรวจสอบว่า npm เป็นรุ่นล่าสุดให้ตรวจสอบเวอร์ชันของแพ็กเกจที่ติดตั้งแล้วที่ชื่อ yarn ด้วยคำสั่งnpm list yarnจากนั้นอัพเดตแพ็กเกจ yarn ที่มีอยู่เป็นเวอร์ชันล่าสุดด้วยคำสั่งnpm update yarn

ผู้ใช้สามารถสลับระหว่าง Node.js รุ่นต่างๆได้ตลอดเวลาโดยไม่จำเป็นต้องมีเครื่องมือเพิ่มเติมเช่น nvm (Node Version Manager) ตัวอย่างเช่น:

sudo snap refresh node --channel=8/stable

ผู้ใช้สามารถทดสอบ Node.js รุ่นที่มีเลือดออกซึ่งสามารถติดตั้งได้จากช่องทางขอบล่าสุดซึ่งกำลังติดตาม Node.js เวอร์ชัน 12 โดยการสลับกับ:

sudo snap switch node --edge

วิธีการนี้เหมาะสำหรับผู้ใช้ที่ยินดีเข้าร่วมในการทดสอบและการรายงานบั๊กต้นน้ำ


คำตอบเดิม

ในการติดตั้ง NTS.js (nodejs) LTS รุ่นล่าสุดและตัวจัดการแพ็คเกจสำหรับ Node.js (npm) ใน Ubuntu ทุกรุ่นที่รองรับในปัจจุบันให้เปิดเทอร์มินัลและรันคำสั่งต่อไปนี้:

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

หากคุณกำลังคัดลอกทั้งสามคำสั่งอย่าละเลยเครื่องหมายขีดคั่นที่ท้ายคำสั่งที่สอง

nodejsแพคเกจประกอบด้วยnodejsไบนารีเช่นเดียวกับnpmเพื่อให้คุณไม่จำเป็นต้องติดตั้งnpmแยกต่างหาก อย่างไรก็ตามเพื่อให้npmแพคเกจบางอย่างทำงาน (เช่นที่ต้องการสร้างจากแหล่งที่มา) คุณจะต้องติดตั้งbuild-essentialแพคเกจ:

sudo apt-get install build-essential  

แผน LTS

ใหม่รุ่นที่สำคัญ semver ของ Node.js ถูกตัดออก masterทุก ๆ หกเดือน เวอร์ชั่นใหม่ที่มีเลขคู่ (เช่น v6, v8, v10 และอื่น ๆ ) จะถูกตัดในเดือนเมษายน เวอร์ชั่นใหม่ที่มีเลขคี่ (เช่น v5, v7, v9) จะถูกตัดในเดือนตุลาคม

เมื่อมีการตัดรุ่นใหญ่ที่มีเลขคี่ใหม่เวอร์ชันหลักที่มีเลขคู่ก่อนหน้าจะเปลี่ยนเป็นแผนสนับสนุนระยะยาว

ทุกรุ่นหลักที่ครอบคลุมโดยแผน LTS จะได้รับการดูแลอย่างแข็งขันเป็นระยะเวลา 18 เดือนนับจากวันที่เข้าสู่ความคุ้มครอง LTS หลังจากการสนับสนุน 18 เดือนเหล่านี้เวอร์ชันหลักจะเปลี่ยนเป็นโหมด "บำรุงรักษา" อีก 12 เดือน

การติดตั้งที่ไม่ใช่ LTS

ปัจจุบันถึงมีนาคม 2017 คำสั่งในการติดตั้ง Node.js รุ่นที่ไม่ใช่ LTS ล่าสุด (v8 ณ เวลาที่โพสต์นี้) มีดังต่อไปนี้:

sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
sudo apt-get install curl  
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs  

กำหนดการ LTS ของ Node.js

ปล่อยชื่อรหัสสถานะ LTS เริ่มการบำรุงรักษาเริ่มต้นสิ้นสุดการบำรุงรักษา
6.x โบรอนที่ใช้งาน 2016-10-18 เมษายน 2018 เมษายน 2019
7.x ไม่มี LTS              
8.x Active Carbon 2017-10-31 เมษายน 2019 ธันวาคม 2019
9.x ไม่มี LTS              
10.x ใช้งาน Dubnium ตุลาคม 2561 เมษายน 2563 เมษายน 2564  
11.x ไม่มี LTS 2019-04-01 2019-06-30
12.x 2019-10-22 2021-04-01 2022-04-01
13.x ไม่มี LTS 2020-04-20 2020-06-01


ใช้ "sudo apt-get install -y nodejs" ใช้งานได้สำหรับฉัน
Davinder Kumar

วิธีการนี้ต้องการความไว้วางใจจากฝ่าย MANY และให้สิทธิ์การเข้าถึงคอมพิวเตอร์ของคุณอย่างเต็มรูปแบบในการ deb.nodesource.com ซึ่งเป็นเอนทิตีที่ไม่สามารถแม้แต่จะอัปเดตเว็บไซต์ในแต่ละเวอร์ชันเพื่อรวมแฮชเนื้อหาเพื่อความปลอดภัยของคุณ ไม่เป็นไรขอบคุณ!
William Entriken

@WilliamEntriken Node.js ตอนนี้เป็นแพ็คเกจ snap ใน Ubuntu ที่ไม่จำเป็นต้องรันcurl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -คำสั่ง สามารถติดตั้ง Node.js แทนเป็นแพ็คเกจ snap ได้ ฉันเพิ่มหัวข้อUpdateใหม่ลงในคำตอบซึ่งมีคำแนะนำสำหรับการติดตั้งแพคเกจ Node.js
karel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.