E: Невозможно исправить проблемы, у вас есть сломанные пакеты

112

Я использую Ubuntu 13.04, которую я установил несколько дней назад. Я пытаюсь установить nodejsи npm. Я попытался установить из командной строки, а затем удалил его. Тогда что-то сломалось.

sudo apt-get install -f nodejs 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:
 nodejs : Conflicts: npm
E: Unable to correct problems, you have held broken packages.

Выход /etc/apt/sources.listниже:

# deb cdrom:[Ubuntu 13.04 _Raring Ringtail_ - Release amd64 (20130424)]/ raring main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://in.archive.ubuntu.com/ubuntu/ raring main restricted
deb-src http://in.archive.ubuntu.com/ubuntu/ raring main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://in.archive.ubuntu.com/ubuntu/ raring-updates main restricted
deb-src http://in.archive.ubuntu.com/ubuntu/ raring-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://in.archive.ubuntu.com/ubuntu/ raring universe
deb-src http://in.archive.ubuntu.com/ubuntu/ raring universe
deb http://in.archive.ubuntu.com/ubuntu/ raring-updates universe
deb-src http://in.archive.ubuntu.com/ubuntu/ raring-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://in.archive.ubuntu.com/ubuntu/ raring multiverse
deb-src http://in.archive.ubuntu.com/ubuntu/ raring multiverse
deb http://in.archive.ubuntu.com/ubuntu/ raring-updates multiverse
deb-src http://in.archive.ubuntu.com/ubuntu/ raring-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://in.archive.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://in.archive.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu raring-security main restricted
deb-src http://security.ubuntu.com/ubuntu raring-security main restricted
deb http://security.ubuntu.com/ubuntu raring-security universe
deb-src http://security.ubuntu.com/ubuntu raring-security universe
deb http://security.ubuntu.com/ubuntu raring-security multiverse
deb-src http://security.ubuntu.com/ubuntu raring-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu raring partner
# deb-src http://archive.canonical.com/ubuntu raring partner

## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu raring main
deb-src http://extras.ubuntu.com/ubuntu raring main

Выход /etc/apt/sources.list.d/*ниже:

deb http://ppa.launchpad.net/chris-lea/node.js/ubuntu raring main
# deb-src http://ppa.launchpad.net/chris-lea/node.js/ubuntu raring main
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb http://dl.google.com/linux/chrome/deb/ stable main
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb http://dl.google.com/linux/chrome/deb/ stable main
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb http://dl.google.com/linux/chrome/deb/ stable main
deb http://deb.opera.com/opera/ stable non-free
deb http://deb.opera.com/opera/ stable non-free
deb http://deb.opera.com/opera/ stable non-free
deb http://deb.opera.com/opera/ stable non-free
Джон Квалис
источник
1
Не уверен, в чем вопрос, однако это может помочь вам перейти к диспетчеру синаптических пакетов. Правка> Исправить сломанные пакеты.
Даниэльц
когда я делаю «gksudo synaptic», ничего не происходит
John Qualis
2
Вы должны установить это сначалаsudo apt-get update sudo apt-get upgrade sudo apt-get install synaptic
danijelc
Другой способ получить похожую ошибку (хотя, очевидно, не для OP) - установить APT::Default-Release. Если для этого требуется установить пакет из более старой версии, чем уже существующие зависимости, они могут быть несовместимы, что приводит к той же ошибке.
Poolie

Ответы:

29

Вы сможете увидеть список удерживаемых пакетов:

apt-mark showhold 

а затем снимите их с

sudo apt-mark unhold <package name>

После этого вы сможете удалить конфликтующий пакет (кажется, что он есть npm), а затем переустановить все.

Если это не удастся, вы можете попробовать aptitudeспособ - часто он может лучше распутать деревья зависимостей.

В обоих случаях будьте осторожны при применении команд и внимательно проверьте список пакетов, помеченных для удаления.

Rmano
источник
98
Когда я попробовал это с wine1.6, apt-mark showholdничего не выводится . Есть другие идеи? (Я также в Ask Ubuntu Chat ) :)
Madara Uchiha
17
Ага. Я тоже. Для меня эта команда никогда ничего не выводила, никогда.
yPhil
3
Читателям: обязательно ознакомьтесь с советами @DragonLord по использованию aptitude! Работает отлично.
user146300
4
Да, я согласен - часто aptitudeспособен распутывать деревья зависимостей лучше, чем обычный apt.
Rmano
2
apt-mark showhold ничего не делает для меня.
kRazzy R
228

Используйте aptitude вместо apt-get. Это умнее. Он не только будет обрабатывать понижение уровня конфликтующих пакетов для вас, но и даст ряд рекомендаций, спрашивающих вас о том, какой из многих возможных предлагаемых рабочих сценариев вы бы хотели.

sudo aptitude install myNewPackage

Если у вас еще нет способностей на вашей машине, получите его с

sudo apt-get install aptitude
Dragonlord
источник
30
Лучший ответ. Я пробовал apt-get последние пару дней. Со способностью это было решено в считанные секунды :-)
Йохан Карлссон
6
Спасибо. Я потратил так много времени на чтение разных способов решения проблемы, что apt-get не объяснит, что я был поражен, когда aptitude просто изложил конкретную проблему и даже дал решение.
bmacnaughton
Не упоминать, это работает на безголовом сервере
BSD
да, но зачем нам использовать это решение? потому что почти компьютеры сейчас 64-битные ??
vanduc1102
5
Единственный недостаток этого решения: вы не можете сделать, sudo apt-get install aptitudeесли ваши пакеты сломаны в первую очередь.
user13161
5

Чтобы решить эту проблему, мне просто нужно было сначала установить synaptic, используя команду ниже, а затем все работает нормально.

sudo apt-get install synaptic
Алаа ЭльСаман
источник
1

Я обнаружил, что это dpkg -rпозволяет мне удалять пакеты один за другим, не вызывая каскад другого поведения.

Я не уверен, что это хорошее решение, но я пошел с ним, и все, кажется, хорошо.

isomorphismes
источник
dselectэто еще лучший инструмент (немного кривой обучения, но дает больше обратной связи).
изоморфизм