Nie można zainstalować żadnych aktualizacji za pomocą menedżera aktualizacji / aktualizacji apt-get

12

Używam Ubuntu 12.04 przez ostatnie kilka tygodni. Ostatnio próbowałem pobrać i zainstalować niektóre pliki za pomocą Menedżera aktualizacji. Zlokalizował kilka plików, pobrał je, ale nie udało się ich zainstalować. Dał błąd:

installArchives() failed: (Reading database ... 
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'libasn1-8-heimdal': Input/output error

Próbowałem użyć, apt-get upgradeale wystąpił podobny błąd:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  icedtea-6-jre-cacao icedtea-6-jre-jamvm openjdk-6-jre openjdk-6-jre-headless
  openjdk-6-jre-lib
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/34.6 MB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'libasn1-8-heimdal': Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)

Każda pomoc byłaby bardzo mile widziana. Z góry dziękuję.

Edycja: Oto dodatkowe informacje, które mogą być przydatne. Mój pierwotny problem polegał na tym, że Centrum oprogramowania Ubuntu nie otwierało się. Odkryłem, że Menedżer aktualizacji i Menedżer pakietów Synaptic również się nie otworzyli. Wszyscy popełniali błąd w następujący sposób:

"installArchives() failed: dpkg: error: reading package info file '/var/lib/dpkg/available': Input/output errorError in function:"

Po wielu wyszukiwaniach zdawałem się naprawiać ten problem, ponieważ menedżerowie pakietów ponownie się otwierali. Kiedy próbowałem pobrać i zainstalować aktualizacje z Menedżera aktualizacji, na początku tego postu wystąpił błąd.

użytkownik64654
źródło
Jakie pliki pobrałeś? Skąd? Co ma z tym wspólnego menedżer aktualizacji?
mikewhokolwiek
Możesz spróbować odinstalować (a następnie ponownie zainstalować) l pakiet w komunikacie. Jeśli to się nie powiedzie, możesz spróbować wyczyścić pamięć podręczną.
John S Gruber,
Nadal pracuję nad rozwiązaniem tego problemu, po prostu nie miałem jeszcze okazji. Wypróbuję podane tutaj instrukcje: goo.gl/oOKqG, kiedy będę miał okazję.
user64654
Dlaczego zdecydowałeś się zainstalować 12.04, a nie 14.04? W końcu powiedziałeś, że dostałeś to kilka tygodni temu, a Trusty nie ma już od dziewięciu miesięcy.
John Scott

Odpowiedzi:

16

Rozwiązałem problem z tymi instrukcjami .

Tak więc rozwiązanie jest następujące:

  1. Przejdź do /var/lib/dpkgkatalogu
  2. Utwórz kopię zapasową statuspliku
  3. Edytuj statusplik
  4. Wyszukaj pakiet, który spowodował błąd
  5. Po prostu usuń wiersze z tego pakietu (ale pozwól wszystkim innym wierszom, które dotyczą innych pakietów, nawet jeśli zawierają one uszkodzony pakiet w polach „Zastępuje” lub „Zależy”)

    […]

  6. Zapisz zmiany w statuspliku

  7. Biegać: sudo dpkg --configure -a
  8. Wymuś ponowną instalację brakujących zależności (ponieważ teraz są pewne):

    sudo apt-get -f install
    

    Myślę, że jeśli uszkodzony pakiet nie zależy od żadnego innego pakietu (może być rzadki), po prostu zainstaluj go ponownie:

    sudo apt-get install the_package
    
  9. Teraz wszystko jest w porządku, można aktualizować, aktualizować lub instalować nowe pakiety!

Należy zauważyć, że miałem kilka różnic w podanym tam rozwiązaniu. Plik statusu nie był łatwy do edycji (ponieważ jest to ważny plik i nigdy nie miał być edytowany). Wszelkie dokonane tam zmiany należy wykonać ostrożnie, a kopię zapasową pliku należy wykonać przed wprowadzeniem jakichkolwiek zmian.

Musiałem powtórzyć kroki 4-8 trzy razy (za każdym razem błąd będzie taki sam tylko z innym pakietem). Wreszcie, gdy wszystkie pakiety zostały usunięte, mogłem je ponownie zainstalować i naprawiłem mój problem.

użytkownik64654
źródło
Jak dowiedziałeś się, które pakiety spowodowały błąd?
Seanny123
@ Seanny123 poprzednia próba apt-get install prawdopodobnie pokazałaby błąd. Na przykład w moim przypadku „czytam listę plików dla pakietu„ manpages-dev ”: błąd wejścia / wyjścia” tuż przed zwróceniem monitu. W pliku statusu szukałem „Package: manpages-dev” i usunąłem wiersze do następnej linii „Package:”. Następnie musiałem wykonać instrukcję „apt-get install manpages-dev”, a następnie mój poprzedni błąd „apt-get dist-upgrade” został zakończony bez błędów. (Dzięki użytkownik 64654!)
Peter Hansen,
2

Może się zdarzyć, że dysk jest uszkodzony przez i-węzły.

W przypadku dysku CD na żywo uruchom to polecenie

sudo fdisk -l

zanotuj dysk i partycję, może to być /dev/dsb1 następnie naprawa:

sudo fsck -y /dev/sdb1

Uruchom ponownie i wróć do systemu

sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade
Guillaume
źródło
Zrobiłem fsck przez sudo shutdown -rF nowi, bez niczego więcej, wszystko znowu było w porządku.
Klaws