Вопрос или проблема
Я пытаюсь обновить nodejs до версии 7.6, но безуспешно. Теперь у меня возникла новая проблема после переустановки node 6.10:
$ sudo apt-get purge nodejs npm
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Пакет 'npm' не установлен, поэтому не удалён
Следующие пакеты были автоматически установлены и больше не нужны:
linux-headers-4.8.0-40 linux-headers-4.8.0-40-generic linux-image-4.8.0-40-generic linux-image-extra-4.8.0-40-generic
Используйте 'sudo apt autoremove' для их удаления.
Следующие пакеты будут УДАЛЕНЫ
nodejs*
0 обновлено, 0 установлено заново, 1 удалено и 53 не обновлено.
После данной операции будет освобождено 51,7 MB дискового пространства.
Хотите продолжить? [Y/n] y
(Чтение базы данных ... В данный момент установлено 278133 файлов и каталогов.)
Удаление nodejs (6.9.5-1nodesource1~yakkety1) ...
Обработка триггеров для man-db (2.7.5-1) ...
(Чтение базы данных ... В данный момент установлено 274476 файлов и каталогов.)
Удаление nodejs (6.9.5-1nodesource1~yakkety1) ...
Очистка конфигурационных файлов для nodejs (6.9.5-1nodesource1~yakkety1) ...
dpkg: предупреждение: при удалении nodejs, каталог '/usr/lib/node_modules' не пуст, поэтому не удалён
Почему говорится, что Пакет 'npm' не установлен, поэтому не удалён
? Я использовал npm для установки многих node пакетов для моих проектов!
Я проигнорировал ошибку и продолжил установку node 7.6:
$ curl -sL https://deb.nodesource.com/setup_7.6 | sudo -E bash -
bash: строка 1: html: Нет такого файла или каталога
bash: строка 2: синтаксическая ошибка рядом с неожиданным токеном `<'
bash: строка 2: `<head><title>404 Not Found</title></head>
Поэтому я вернулся к node 6.x. Но я больше не могу установить npm:
$ sudo apt-get install npm
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы запросили невозможную ситуацию или, если вы используете нестабильную дистрибуцию, что некоторые требуемые пакеты ещё не были созданы или перемещены из Incoming.
Следующая информация может помочь решить эту ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости.
npm : Зависит: от nodejs, но он не будет установлен
Зависит: от node-abbrev (>= 1.0.4), но он не будет установлен
Зависит: от node-ansi (>= 0.3.0-2), но он не будет установлен
Зависит: от node-ansi-color-table, но он не будет установлен
Зависит: от node-archy, но он не будет установлен
Зависит: от node-block-stream, но он не будет установлен
Зависит: от node-fstream (>= 0.1.22), но он не будет установлен
Зависит: от node-fstream-ignore, но он не будет установлен
Зависит: от node-github-url-from-git, но он не будет установлен
Зависит: от node-glob (>= 3.1.21), но он не будет установлен
Зависит: от node-graceful-fs (>= 2.0.0), но он не будет установлен
Зависит: от node-inherits, но он не будет установлен
Зависит: от node-ini (>= 1.1.0), но он не будет установлен
Зависит: от node-lockfile, но он не будет установлен
Зависит: от node-lru-cache (>= 2.3.0), но он не будет установлен
Зависит: от node-minimatch (>= 0.2.11), но он не будет установлен
Зависит: от node-mkdirp (>= 0.3.3), но он не будет установлен
Зависит: от node-gyp (>= 0.10.9), но он не будет установлен
Зависит: от node-nopt (>= 3.0.1), но он не будет установлен
Зависит: от node-npmlog, но он не будет установлен
Зависит: от node-once, но он не будет установлен
Зависит: от node-osenv, но он не будет установлен
Зависит: от node-read, но он не будет установлен
Зависит: от node-read-package-json (>= 1.1.0), но он не будет установлен
Зависит: от node-request (>= 2.25.0), но он не будет установлен
Зависит: от node-retry, но он не будет установлен
Зависит: от node-rimraf (>= 2.2.2), но он не будет установлен
Зависит: от node-semver (>= 2.1.0), но он не будет установлен
Зависит: от node-sha, но он не будет установлен
Зависит: от node-slide, но он не будет установлен
Зависит: от node-tar (>= 0.1.18), но он не будет установлен
Зависит: от node-underscore, но он не будет установлен
Зависит: от node-which, но он не будет установлен
E: Не удаётся исправить проблемы, у вас имеются повреждённые пакеты.
Есть идеи?
У меня была такая же проблема с npm.
Я рекомендую установить aptitude, который может помочь вам разрешить конфликты
sudo apt install aptitude
затем установите ваш пакет с помощью aptitude
sudo aptitude install npm
У меня была такая же проблема с npm и мне пришлось установить следующие пакеты в порядке:
sudo apt install libssl1.0-dev
sudo apt install nodejs-dev
sudo apt install node-gyp
sudo apt install npm
Надеюсь это поможет
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo apt-get purge nodejs npm
sudo apt autoremove
Затем установите node и npm
Вам не нужно устанавливать npm
при установке nodejs
из nodesource, так как он уже включает npm
.
Ошибка, которую вы получаете, возникает из-за отсутствия пакета npm
в репозитории nodesource, поэтому попытка установить npm
приведет к выбору встроенного пакета npm
, который подтягивает встроенный (старый) пакет nodejs
.
Просто сделайте это:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install nodejs
Это установит как node
, так и npm
.
node -v
npm -v
Это сработало для меня:
sudo apt install aptitude
sudo aptitude install libnode-dev
sudo aptitude install libnode64
sudo aptitude install node-gyp
sudo aptitude install npm
Ответ или решение
Причина возникновения проблемы при установке npm связана с зависимостями и неправильно настроенными пакетами в системе. Давайте разберёмся, как можно решить данную ситуацию.
Теория
Ошибка "Unable to correct problems, you have held broken packages" сигнализирует о проблемах с зависимостями пакетов. Это означает, что некоторые пакеты не могут быть автоматически разрешены из-за недостающих зависимостей или конфликтов с текущими установленными пакетами. В нашем случае, пакет npm требует определённые версии nodejs и других связанных пакетов, которые не могут быть найдены или не установлены.
Пример
Ваша попытка установить или обновить Node.js через curl
вызвала ошибку, связанную с отсутствием или некорректным URL. Как следствие, npm не устанавливается из-за зависимостей, включая nodejs и другие библиотеки, которые не могут быть найдены в репозитории.
Применение
-
Удаление и очистка предыдущих установок:
Удалите все файлы и конфигурации, связанные с nodejs и npm, чтобы избежать конфликтов:
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm sudo rm -rf /usr/local/lib/node* sudo rm -rf /usr/local/bin/node* sudo rm -rf /usr/local/include/node* sudo apt-get purge nodejs npm sudo apt autoremove
-
Установка Node.js и npm:
Установите Node.js и npm из надёжного репозитория, который включает необходимые инструменты:
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs
Примечание: Это установит Node.js версии 14.x. Вы можете заменить номер версии на нужный.
-
Дополнительные инструменты и зависимости:
Если вышеуказанный способ не работает, можно установить дополнительные пакеты вручную:
sudo apt install build-essential sudo apt install libssl-dev node-gyp
Использование
aptitude
иногда помогает решить конфликты:sudo apt install aptitude sudo aptitude install npm
-
Проверка установки:
Убедитесь, что Node.js и npm установлены корректно:
node -v npm -v
Эти шаги помогут устранить конфликты и установить Node.js с npm. Если проблема остаётся, проверьте доступность репозиториев и корректность URL для загрузки. Убедитесь, что ваша система обновлена и все пакеты имеют соответствующие версии.