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