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

13

Сегодня я столкнулся с проблемой, когда решил использовать 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. В настоящее время доступны версии 6, 8, 9, 10, 11, 12 и 13 Node.js, а Snap Store обновляется в течение нескольких часов или минут после выпуска Node.js.

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

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

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

$ node -v  
v9.9.0

Обновленная версия npm будет установлена ​​как часть привязки узла. npm должен быть запущен за пределами узла repl, в вашей обычной оболочке. После установки привязки узла выполните следующую команду, чтобы включить проверку обновлений 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, которые могут быть установлены с самого последнего пограничного канала, который в настоящее время отслеживает версию 12 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  

План LTS

Новые основные выпуски 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 LTS Начало обслуживания Начало обслуживания Окончание обслуживания
6.x Активный бор 2016-10-18 апрель 2018 апрель 2019
7.x Нет LTS              
8.x Активный углерод 2017-10-31 апрель 2019 декабрь 2019
9.x Нет LTS              
10.x Активный Дубний Октябрь 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" помогло мне
Давиндер Кумар
Этот метод требует доверия МНОГИХ сторон, а затем предоставления полного доступа к вашему компьютеру для deb.nodesource.com, организации, которая не может даже потрудиться обновлять свой веб-сайт каждую версию, чтобы включить хэш содержимого для вашей безопасности. Спасибо, не надо!
Уильям Энтрикен
@WilliamEntriken Node.js теперь представляет собой пакет оснастки в Ubuntu, который не требует запуска curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -команды. Вместо этого Node.js может быть установлен как пакет оснастки. Я добавил новый раздел « Обновление » в свой ответ, в котором содержатся инструкции по установке пакета моментальных снимков Node.js.
Карел