Как разрешить "Следующие пакеты имеют неудовлетворенные зависимости"

Я использовал этот скрипт для установки основного программного обеспечения, но пришлось прервать его из-за низкой скорости интернета. Теперь, когда я нажимаю $ sudo apt-get install npm, я получаю следующую ошибку

[email protected]:~$ sudo apt-get installed npm
E: Invalid operation installed
[email protected]:~$ sudo apt-get install npm
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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 (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table 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 (>= 3.0.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-underscore 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.

Ответ 1

Команда Ubuntu исправляет неудовлетворенные зависимости и разбитые пакеты.

sudo apt-get install -f

со страницы man:

-f, - -f ix-broken Fix; попытайтесь исправить систему со сломанными зависимостями. Эта опция при использовании с установкой/удалением может опускать любые пакеты, позволяющие APT выводить вероятное решение. Если пакеты указаны, они должны полностью исправить проблему. Опция иногда необходима при запуске APT в первый раз; Сам APT не разрешает существование в системе разбитых пакетов. Возможно, структура структуры системы может быть настолько коррумпирована, что требует ручного вмешательства (что обычно означает использование dselect (1) или dpkg --remove для устранения некоторых из повреждающих пакетов)

Ubuntu попытается исправить себя, когда вы запустите команду. Когда он будет завершен, вы можете проверить, работает ли он снова, выполнив команду еще раз, и вы должны получить вывод, похожий на:

Чтение списков пакетов... Готово Создание дерева зависимостей Чтение информации о состоянии... Готово 0 обновлено, 0 вновь установлено, 0 удалено и 2 не обновлены.

Ответ 2

Если sudo apt-get install -f <package-name> не работает, попробуйте aptitude:

sudo apt-get install aptitude
sudo aptitude install <package-name>

Aptitude попытается решить проблему.

В качестве примера, в моем случае, я все еще получаю некоторую ошибку при попытке установить libcurl4-openssl-dev:

sudo apt-get install -f libcurl4-openssl-dev

Поэтому я стараюсь aptitude, оказывается, мне нужно понизить некоторые пакеты.

The following actions will resolve these dependencies:

    Keep the following packages at their current version:
    1)     libyaml-dev [Not Installed]                        

Accept this solution? [Y/n/q/? (n)

The following actions will resolve these dependencies:

    Downgrade the following packages:                                
    1)     libyaml-0-2 [0.1.4-3ubuntu3.1 (now) -> 0.1.4-3ubuntu3 (trusty)]

Accept this solution? [Y/n/q/?] (Y)

Ответ 3

Прежде всего попробуйте это

sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove

Если ошибка все еще сохраняется, сделайте это

sudo apt --fix-broken install
sudo apt-get update && sudo apt-get upgrade
sudo dpkg --configure -a
sudo apt-get install -f

Затем попробуйте еще раз:

sudo apt-get install npm

Но если он еще не смог решить проблемы, проверьте зависимости, используя sudo dpkg --configure -a и удалите их по одному. Предположим, что зависимости зависят от числа npm, а затем для этого,

sudo apt-get remove nodejs
sudo apt-get remove npm

Затем перейдите в /etc/apt/sources.list.d и удалите любой список узлов, если у вас есть. Затем сделайте

sudo apt-get update

Затем снова проверьте проблему с зависимостями, используя sudo dpkg --configure -a и если все будет ясно, тогда все будет готово. Позже установите npm снова, используя это

v=8   # set to 4, 5, 6, ... as needed
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

Затем установите пакет Node.js.

sudo apt-get install -y nodejs

Ответ выше будет работать и для общих случаев (для зависимостей от других пакетов, таких как django и т.д.) Сразу после того, как первые два процесса используют тот же процесс для пакета, с которым вы сталкиваетесь.

Ответ 4

Установка nodejs установит npm... так что просто удалите nodejs, а затем переустановите его: $ sudo apt-get remove nodejs

$ sudo apt-get --purge remove nodejs node npm
$ sudo apt-get clean
$ sudo apt-get autoclean
$ sudo apt-get -f install
$ sudo apt-get autoremove

Ответ 5

Я попал в такую ситуацию, когда установил узел js из последней стабильной версии.

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

Кажется, эта версия уже поставляется с предварительно упакованным NPM. Поэтому, когда я попытался установить NPM снова, я получил эту ошибку. Если кто-то устанавливает Nodejs таким образом, нет необходимости устанавливать NPM отдельно.

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 (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table 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 (>= 3.0.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-underscore 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.

Ответ 6

Я только что решил эту проблему. Проблема была в конфликте версий. Nodejs 10 установлен с npm. Поэтому перед установкой nodejs удалите старый npm. Или удалите новый узел → удалить npm → снова установить узел.

Это единственный способ, который помог мне.

Ответ 8

Узел поставляется с установленной npm, поэтому вы должны иметь версию npm. Тем не менее, npm обновляется чаще, чем Node, поэтому вы захотите убедиться в его последней версии.

Пытаться

sudo npm install npm -g