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.