Node Package Manager каким-то образом был поврежден, теперь его невозможно установить

Node Package Manager каким-то образом был поврежден, теперь его невозможно установить

Я столкнулся с проблемой сегодня, когда решил использовать 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 снова правильно установился и заработал?

Спасибо.

решение1

Обновлять

Что касается комментария Уильяма Энтрикена под этим ответом, есть лучший способ установить Node.js изначально в Ubuntu в виде пакета Snap.

Node.js доступен как пакет snap во всех поддерживаемых в настоящее время версиях Ubuntu. Что касается Node.js, разработчики могут выбрать один или несколько поддерживаемых в настоящее время релизов и получать регулярные автоматические обновления напрямую из NodeSource. В настоящее время доступны версии Node.js 6, 8, 9, 10, 11, 13, 14, 15, 16, 17 и 18, при этом Snap Store обновляется в течение нескольких часов или минут после релиза Node.js.

Node можно установить с помощью одной команды, например:

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

Доступ к привязке узла можно получить с помощью команды node, например:

$узел -v  
версия 9.9.0

Актуальная версия npm будет установлена ​​как часть node snap. npm следует запускать вне node repl, в вашей обычной оболочке. После установки node snap выполните следующую команду, чтобы включить проверку обновлений npm:

sudo chown -R $USER:$(id -gn $USER) /home/ваш логин/.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, которые можно установить из последнего пограничного канала, выполнив переключение с помощью:

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  

План ДТС

Новые semver-major релизы Node.js вырезаются masterкаждые шесть месяцев. Новые четные версии (например, v6, v8, v10 и т. д.) вырезаются в апреле. Новые нечетные версии (например, v5, v7, v9) вырезаются в октябре.

При выпуске нового нечетного основного релиза предыдущая четная основная версия переходит на план долгосрочной поддержки.

Каждая основная версия, покрываемая планом LTS, будет активно поддерживаться в течение 18 месяцев с даты, когда она попадает в покрытие LTS. После этих 18 месяцев активной поддержки основная версия перейдет в режим «обслуживания» на 12 дополнительных месяцев.

установка не-LTS

По состоянию на март 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 Начало технического обслуживания Конец обслуживания
6.х ЭОЛ Бор 2016-04-26 2016-10-18 2018-04-30 2019-04-30
7.х ЭОЛ 2017-05-30 2017-06-30
8.х ЭОЛ Углерод 2016-10-25 2017-10-31 2019-01-01 2019-12-31
9.х ЭОЛ 2017-10-01 2018-06-30
10.х ЭОЛ Дубний 2018-04-24 2018-10-30 2020-05-19 2021-04-30
11.х ЭОЛ 2018-10-23 2019-06-01
12.х Техническое обслуживание LTS Эрбий 2019-04-23 2019-10-21 2020-11-301 2022-04-30
13.х ЭОЛ 2019-10-22 2020-06-01
14.х Техническое обслуживание LTS Фермий 2020-04-21 2020-10-27 2021-10-30 2023-04-30
16.х Активный LTS Галлий 2021-04-20 2021-10-26 2022-10-18 2024-04-30
17.х Текущий 2021-10-19 2022-04-01 2022-06-01
18.х Текущий 2022-04-19 2022-10-25 2023-10-18 2025-04-30

Связанный контент