E: Nie można rozwiązać problemów, trzymałeś uszkodzone paczki

112

Używam Ubuntu 13.04, który zainstalowałem kilka dni temu. Próbuję zainstalować nodejsi npm. Najpierw próbowałem zainstalować z wiersza poleceń, a następnie odinstalowałem. Potem coś się zepsuło.

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.

Wyjście /etc/apt/sources.listjest poniżej:

# 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

Wyjście /etc/apt/sources.list.d/*jest poniżej:

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
John Qualis
źródło
1
Nie wiem, jakie jest pytanie, może to jednak pomóc przejść do Menedżera pakietów synaptycznych. Edycja> Napraw uszkodzone pakiety.
danijelc,
kiedy robię „gksudo synaptic”, nic się nie dzieje
John Qualis
2
Najpierw musisz go zainstalowaćsudo apt-get update sudo apt-get upgrade sudo apt-get install synaptic
danijelc,
Innym sposobem na uzyskanie podobnego błędu (choć najwyraźniej nie dla OP) jest ustawienie APT::Default-Release. Jeśli wymaga to zainstalowania pakietu ze starszej wersji niż istniejące już zależności, mogą być niekompatybilne, co daje ten sam błąd.
poolie

Odpowiedzi:

29

Powinieneś zobaczyć listę wstrzymanych pakietów według:

apt-mark showhold 

a następnie cofnij je

sudo apt-mark unhold <package name>

Następnie powinieneś być w stanie usunąć pakiet będący w konflikcie (wydaje się, że tak jest npm), a następnie ponownie zainstalować wszystko.

Jeśli to się nie powiedzie, możesz wypróbować aptitudesposób --- często jest on w stanie lepiej rozplątać drzewa zależności.

W obu przypadkach należy zachować ostrożność podczas stosowania poleceń i dokładnie sprawdzić listę pakietów oznaczonych do usunięcia.

Rmano
źródło
98
Kiedy próbowałem tego z wine1.6, apt-mark showholdnic nie wyświetla. Jakieś inne pomysły? (Jestem również na czacie Ask Ubuntu ) :)
Madara Uchiha
17
Tak. Ja też. Dla mnie to polecenie nigdy niczego nie generowało.
yPhil
3
Do czytelników: zapoznaj się ze wskazówkami @DragonLord, aby użyć aptitude! Działa świetnie.
user146300,
4
Tak, zgadzam się - często aptitudejest w stanie rozplątać drzewa zależności w lepszy sposób niż zwykły apt.
Rmano,
2
apt-mark showhold nic dla mnie nie robi.
kRazzy R
227

Użyj aptitude zamiast apt-get. Jest bardziej inteligentny. Nie tylko poradzi sobie z obniżeniem poziomu konfliktu pakietów, ale także wyda serię rekomendacji z pytaniem, który z wielu możliwych sugerowanych scenariuszy roboczych chciałbyś.

sudo aptitude install myNewPackage

Jeśli nie masz jeszcze umiejętności na swoim komputerze, skorzystaj z niego

sudo apt-get install aptitude
Władca Smoków
źródło
30
Najlepsza odpowiedź. Próbowałem apt-get przez ostatnie kilka dni. Z uzdolnieniem rozwiązano to w kilka sekund :-)
Johan Karlsson
6
Dziękuję Ci. Spędziłem tyle czasu czytając różne sposoby rozwiązania problemu, że apt-get nie wyjaśni, że byłem zdumiony, gdy aptitude po prostu określił konkretny problem, a nawet dostarczył rozwiązanie.
bmacnaughton
Nie wspominając o tym, że działa na serwerze bezgłowym
bsd
tak, ale dlaczego musimy skorzystać z tego rozwiązania? ponieważ prawie komputery mają teraz 64 bity?
vanduc1102
5
Jedna wada tego rozwiązania: nie możesz zrobić, sudo apt-get install aptitudejeśli twoje paczki są w pierwszej kolejności uszkodzone.
user13161
5

Aby rozwiązać ten problem, musiałem najpierw zainstalować synaptic, używając komendy poniżej, a potem wszystko działa dobrze.

sudo apt-get install synaptic
Alaa ElSaman
źródło
1

Odkryłem, że dpkg -rpozwala mi to usuwać pakiety jeden po drugim, bez wywoływania kaskady innych zachowań.

Nie jestem pewien, czy to dobre rozwiązanie, ale poszedłem z tym i wszystko wydaje się w porządku.

izomorfizmy
źródło
dselectjest jeszcze lepszym narzędziem (trochę krzywej uczenia się, ale daje więcej informacji zwrotnych).
izomorfizm