Node Package Manager певним чином пошкоджений, тепер його неможливо встановити


14

Я зіткнувся з проблемою сьогодні, коли вирішив використовувати npm update -gв каталозі додатків nodejs. Це було поганим рішенням, оскільки воно змусило мене зіткнутися із загальною та згубною проблемою з npm .

Рішення полягає в перевстановленні nodejs і npm. На жаль, коли я переходжу до установки npm за допомогою sudo apt-get install npmцього, він не працює.

Повна помилка в терміналі тут:

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

Оновлення

Щодо коментаря Вільяма Ентрікена під цією відповіддю, є кращий спосіб встановити Node.js спочатку в Ubuntu як пакет оснащення.

Node.js доступний у вигляді пакету оснащення у всіх підтримуваних на даний момент версіях Ubuntu. Спеціально для Node.js, розробники можуть вибирати один або кілька поточно підтримуваних версій та отримувати регулярні автоматичні оновлення безпосередньо з NodeSource. Наразі доступні версії Node.js 6, 8, 9, 10, 11, 12 і 13, причому Snap Store оновлюється протягом годин або хвилин після випуску Node.js.

Вузол можна встановити за допомогою однієї команди, наприклад:

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

Оснастка вузла може отримати доступ за допомогою команди node, наприклад:

$ вузол -v  
v9.9.0

Оновлена ​​версія npm буде встановлена ​​як частина оснащення вузла. npm слід запускати поза відбитком вузла у вашій звичайній оболонці. Після встановлення оснащення вузла запустіть таку команду, щоб увімкнути перевірку оновлення npm:

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

Замініть your-usernameу наведеній вище команді власне ім'я користувача. Потім запустіть, npm -vщоб перевірити, чи версія оновлення npm оновлена. Як приклад я перевірив, що npm був npm list 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

Такий підхід рекомендується використовувати лише тим користувачам, які бажають брати участь у тестуванні та повідомленні про помилки вище за течією.


Оригінальна відповідь

Щоб встановити останні версії LTS Node.js (nodejs) та менеджера пакунків для 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

Нові напів-основні випуски Node.js скорочуються masterкожні півроку. Нові версії з парними номерами (наприклад, v6, v8, v10 тощо) скорочуються у квітні. Нові версії з непарними номерами (наприклад, v5, v7, v9) скорочуються у жовтні.

Коли новий основний випуск з непарними номерами скорочується, попередній парний номер з основною версією переходить до плану довгострокової підтримки.

Кожна основна версія, що охоплюється планом LTS, буде активно підтримуватися протягом 18 місяців з дати набуття покриття LTS. Після цих 18 місяців активної підтримки основна версія перейде в режим "технічного обслуговування" ще 12 місяців.

нестандартна установка

Починаючи з березня 2017 року, команди для встановлення останньої не-LTS-версії Node.js (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  

Node.js LTS Розклад

Відпустіть кодове ім'я статусу LTS 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 жовтень 2018 квітня 2020 квітня 2021 року  
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

Цей метод вимагає довіритися МНОГО сторін, а потім надавати повний доступ до вашого комп'ютера до deb.nodesource.com, організації, яке навіть не може потурбуватися оновлювати свою веб-сторінку кожною версією, щоб включити хеш вмісту для вашої безпеки. Ні, дякую!
Вільям Ентрікен

@WilliamEntriken Node.js тепер пакет оснащення в Ubuntu, який не вимагає виконання curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -команди. Натомість Node.js може бути встановлений як оснащений пакет. До своєї відповіді я додав новий розділ " Оновлення ", який містить інструкції щодо встановлення оснащення пакету Node.js.
карел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.