Jak usunąć uszkodzone pakiety w Ubuntu


38

Nie mogę usunąć uszkodzonego opakowania. Użyj następującego polecenia: sudo apt-get -f install ale otrzymuję następującą odpowiedź:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Próbowałem różnych poleceń, takich jak

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Ale nie dostałem żadnego wyniku. Nie mogę zainstalować synaptic. Wszelkie pomysły, jak mogę usunąć zepsuty pakiet?


Oto kilka odpowiedzi sugerujących --force-remove-reinstreqi --force-overwrite. Pamiętaj, że powinieneś używać tych dwóch (szczególnie pierwszego) tylko jeśli jesteś ekspertem od Linuksa, ponieważ może to całkowicie uszkodzić twój system.
g_p

Odpowiedzi:


55

uruchom to polecenie, aby usunąć uszkodzone pakiety w Ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

po usunięciu pakietu zaktualizuj swój system za pomocą polecenia

sudo apt-get update

uruchom ponownie system po pomyślnej aktualizacji.


5
Tego polecenia należy zawsze unikać, ponieważ bardziej psuje system niż naprawia
rancho

2
@rancho zależy od tego, jaki to pakiet.
Philip

nice one, sposób zapisu package_name Gus zawsze jeszcze mogę zobaczyć listę 900 linii w szalonej formacie, na przykład: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). czekanie na LTS naprawdę zrobiło mi tę szaloną sztuczkę.
nyxee

@rancho „to bardziej niszczy system niż naprawia”. Czy możesz to rozwinąć? man dpkgniewiele pomaga.
Stéphane Gourichon

To była jedyna rzecz, która działała dla mnie. Zepsułem mój mysql podczas aktualizacji pakietu. Teraz nie mogłem wyczyścić ani ponownie zainstalować. To uratowało mi życie.
Ankit Singhaniya

11

Otwórz terminal i użyj następującego polecenia

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

To powinno rozwiązać twój problem.


11

Znalazłem to:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Działa najlepiej. Jeśli pojawi się błąd, że nie usunie pakietu, ponieważ zależy od niego inny pakiet, usuń również ten inny pakiet. Musisz powtórzyć ten krok kilka razy, a następnie ponownie zainstalować usunięte pakiety.

Jest force-remove-reinstreqto „opcja nuklearna” usuwania pakietu. Nie powiedzie się to tylko wtedy, gdy istnieje inny pakiet w zależności od tego, który chcesz usunąć - ponownie, w tym przypadku, również usunąłem ten pakiet zależny.


Opcja nuklearna działała tam, gdzie czyści się, czyści, instaluje ponownie, autorove, przez oba dpkgi apt-getnie udaje się. Dziękuję Ci.
LAFK mówi Przywróć Monikę

To najlepszym rozwiązaniem, jeśli chcesz po prostu nuke wszystko i zacząć od nowa. Zaoszczędził mi dużo czasu! (Użyłem również - purge after --remove)
andersevenrud

proszę podać kilka wskazówek, jak to wypełnić, package_namegdy mamy ponad 1000 wierszy (niektóre zduplikowane) w plikach dziennika apt.
nyxee

4

To naprawiło mój problem:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

Proszę więc zaznaczyć to jako poprawną odpowiedź.
jarno

Działa świetnie.
Shubham Patel,

3

Otwórz terminal i wklej te linie po linii

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

następnie spróbuj ponownie


2

Ten sam błąd powtarza się, jeśli to zrobimy apt-get cleani apt-get -f installdopóki nie usuniemy niepotrzebnych danych z /var/lib/dpkg/statuspliku w Ubuntu.

Załóżmy, że musimy usunąć uszkodzony pakiet Apache. Początkowo musimy otworzyć plik statusu i wyszukać apache pakietu. Usuń cały opis pakietu i zapisz plik statusu. Następnie spróbuj użyć apt-get -f installi apt-get clean.


2

nic z powyższych nie działało dla mnie. ostatecznie dokonałem edycji pliku / var / lib / dpkg / status i usunąłem stamtąd pakiety.

Trudno nie poradziłbym tego zrobić, tylko jeśli coś innego zawiedzie ...


To wydaje się być jedyną rzeczą, która działała dla mnie. Nawet tak zwana „opcja nuklearna” opcji --force-remove-reinstreq nie mogła usunąć pakietu naruszającego prawo. Dziękuję Panu.
alex

1

Żadne z powyższych nie działało dla mnie

Kiedyś sudo aptitude.

Natychmiast znalazł błąd i zaoferował opcje. Ty wybierasz i to naprawia.


naprawiłem to również dla mnie na Debianie - było to dla mnie jedyne działające rozwiązanie. Żaden z wcześniejszych komentarzy nie zadziałał dla mnie! Dzięki!
Hirbod

0

Tutaj jest jeden:

zaktualizuj listę pakietów w ten sposób

 sudo apt-get update

następnie wyczyść wszystkie częściowe pakiety

 sudo apt-get autoclean

Teraz wyczyść apt cache

 sudo apt-get clean

Teraz usuń niepotrzebne zależności

 sudo apt-get autoremove

z powyższego polecenia możesz zidentyfikować wszelkie uszkodzone pakiety i usunąć je w ten sposób

 sudo dpkg --remove --force-remove-reinstreq package_name

Wreszcie mopup wszystkie inne pakiety z zależnościami

 sudo apt-get -f install 

Powiedz mi jak idzie.


Myślę, że to polecenie jest niepoprawne: `sudo dpkg --remove -force --force-remove-reinstreq nazwa_pakietu.
Juan Simón

Ji ... więc który z nich jest prawidłowy?
Olu Smith,

0
  1. przeszukuj wszystkie pakiety, które są zainstalowane dzisiaj lub wczoraj awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 spowodował problem, więc usuwam pakiet sudo dpkg -r wine-qqintl:i386

  3. gotowy.


1
ok, możemy pobrać ostatnio zainstalowane takie pakiety, ale to nie odpowiada na pytanie, jak usunąć uszkodzone pakiety
Zanna,

0

Miałem problem ze zepsutym pakietem kodi. Otworzyłem menedżera pakietów synaptycznych i użyłem filtra „zepsuty” do zlokalizowania pakietu i oznaczyłem go do całkowitego usunięcia. Działa jak mistrz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.