Jak naprawić zepsute aktualizacje synaptyczne: „Pakiet jest w bardzo złym niespójnym stanie”

15

Mam Dell Mini9 z systemem Ubuntu 8.10. Pewnego dnia wpadłem na świetny pomysł, aby sprawdzić, czy mogę zainstalować stos LAMP. Miałem problem z instalacją MySQL 5.0. Nie pamiętam błędu, ale odkąd wszystkie próby uruchomienia programu update-manager, synaptic lub apt-get kończą się błędem dotyczącym mysql-server-5.0: „Pakiet jest w bardzo złym niespójnym stanie”.

Próbowałem apt-get remove mysql-server-5.0i również installbez powodzenia. Oba zawodzą z tym samym błędem poniżej. Jak mogę to naprawić?

$ sudo apt-get remove mysql-server-5.0
Czytanie list pakietów ... Gotowe
Budowanie drzewa zależności       
Odczytywanie informacji o stanie ... Gotowe
Następujące pakiety zostały automatycznie zainstalowane i nie są już wymagane:
  dhcdbd libisc32
Użyj polecenia „apt-get autorove”, aby je usunąć.
Następujące pakiety zostaną USUNIĘTE:
  mysql-server-5.0
0 zaktualizowanych, 0 nowo zainstalowanych, 1 do usunięcia i 164 niezaktualizowanych.
1 nie w pełni zainstalowany lub usunięty.
Po tej operacji zostanie zwolnione 85,4 MB miejsca na dysku.
Czy chcesz kontynuować [T / n]? 
dpkg: błąd przetwarzania mysql-server-5.0 (--remove):
 Pakiet jest w bardzo złym niespójnym stanie - powinieneś
 zainstaluj ponownie przed próbą usunięcia.
Napotkano błędy podczas przetwarzania:
 mysql-server-5.0
E: Podproces / usr / bin / dpkg zwrócił kod błędu (1)
spoulson
źródło
Rozważ użycie <pre> do wyświetlania ekranu, gdy podświetlanie składni nie jest potrzebne.
John Oxley,

Odpowiedzi:

19

Żadna z pozostałych odpowiedzi nie działała dla mnie w Maverick.

W moim przypadku okazało się, że zadziałało:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm

sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree

(zastępując „flashplugin-nonfree” nazwą uszkodzonego pakietu i zastępując „prerm” typem skryptu, który zawiódł - w moim przypadku był to „postrm”, skrypt po usunięciu).

I mówią, że Ubuntu jest łatwy w użyciu !! narzekanie narzekanie

Robin Green
źródło
- purge lepiej upuszczać zepsute deps
stepancheg
1
Godzinami szukałem rozwiązania podobnego problemu i tylko ten zadziałał. Dziękuję Ci.
LukeGT,
6

Miałem dokładnie ten sam problem z instalacją mysql. Musisz wyczyścić paczkę. Samo usunięcie pakietu nie usuwa dołączonych do niego plików konfiguracyjnych.

Odwołam się także do mysql-server-5.0 , ale zdaję sobie sprawę, że istnieje pakiet otoki mysql-server, który zawsze wskazuje na najnowszą wersję. tzn. jeśli poprosisz o zainstalowanie mysql-server , apt-get powinien powiedzieć ci, że to zależy od mysql-server-5.0 i zainstalować oba. Jeśli masz pakiet mysql-server w systemie, upewnij się, że go również nie ma przed próbą ponownej instalacji.

  • Upewnij się, że serwer mysql (mysqld) nie jest uruchomiony. Jeśli tak, sprowadź go:

    sudo /etc/init.d/mysqld stop

  • Sprawdź, czy jakieś pakiety zależą od mysql-server-5.0:

    sudo apt-cache rdepends mysql-server-5.0

    Jeśli tak, musisz użyć opcji --force , aby odinstalować.

  • Wyczyść pakiet (uwzględnij opcję --force , w zależności od # 2)

    sudo apt-get --purge remove --force mysql-server-5.0

  • Upewnij się, że pliki instalatora zostały również wyczyszczone przez uruchomienie

    sudo apt-get autoclean
    sudo apt-get autorove

  • Zainstaluj ponownie pakiet serwera

    sudo apt-get install mysql-server-5.0

Mam nadzieję, że powinno to rozwiązać problem. Jednak pakiet może być nadal uszkodzony, jeśli wprowadzisz jakiekolwiek zmiany w plikach pochodzących z wspólnego pakietu mysql .

mysql-common to pakiet podstawowy używany zarówno przez składniki klienta, jak i serwera. Jeśli nadal nie działa, spróbuj ponownie zainstalować ten pakiet. Na pewno będą pakiety zależne od tego; sprawdź używając # 2 powyżej. Wyczyść serwer mysql przed ponowną instalacją mysql-common . Nie zapomnij również ponownie zainstalować mysql-common , w przeciwnym razie twój system będzie bardzo uszkodzony.

nagul
źródło
1

Możesz aptitudespróbować, który ma lepszą obsługę zależności:

sudo aptitude remove mysql-server-5.0
innaM
źródło
Tutaj jest błąd dpkg, więc nie sądzę, aptitudeże lepiej by było. Nie zrozumcie mnie źle, jestem aptitudeskończony apt-get, ale pod koniec dnia obaj przekazują prawdziwą drobiazgowość dpkg(którą z przyjemnością usłyszysz pierwotnie zaimplementowaną w Perlu).
Telemachus,
;-) Właśnie pomyślałem, że warto spróbować.
innaM
0

Próbować

sudo dpkg -i reconfigure mysql-server-5.0
sudo apt-get remove --force mysql-server-5.0

Jeśli jest to inny uszkodzony apt-get remove --forcepakiet , wypróbuj również ten pakiet.

John Oxley
źródło
0

Występujący tam dpkgbłąd sugeruje, że problem występuje podczas dpkgpróby faktycznego usunięcia pakietu. (Pod koniec dnia, apt-geta Synaptici jak ręką off do rzeczywistej pracy dpkg).

Czy próbowałeś zrobić dokładnie to, co mówi komunikat i najpierw zainstalować ponownie ?

apt-get install --reinstall mysql-server-5.0

Choć może to zabrzmieć głupio, jeśli dpkgdusi się podczas procesu usuwania (ponieważ jakiś plik, który powinien usunąć, zaginął w międzyczasie), wówczas ponowna instalacja, a następnie usunięcie może czasem pomóc. Upewnij się, że mysqlnie działa, zanim spróbujesz go zainstalować lub usunąć, jak sugeruje nagul .

Telemachus
źródło
0

dpkg -r --force-remove-reinstreq <package> usuwa pakiet bez sprawdzania, czy wymaga ponownej instalacji.

Następnie powinieneś być w stanie ponownie zainstalować pakiet za pomocą preferowanego menedżera pakietów.

Jaime Soriano
źródło
0

Miałem ten problem z listonoszem. Usunięto /etc/init.d/mailman z

rm /etc/init.d/mailman

naprawione :)

Szampan Stéphan
źródło