Debian Wheezy prowadzę od ponad roku bez żadnych problemów, jeszcze tydzień temu. Bez wyraźnego powodu system nagle zdecydował, że jądro Linuksa jest tylko w połowie skonfigurowane i żadna z poprawek, które znalazłem w Internecie, nie zadziałała. W rezultacie apt
próbuje to naprawić za każdym razem, gdy wykonywane są aktualizacje, i kończy się niepowodzeniem.
Detale
Objaw
Za każdym razem, gdy zostaną uruchomione aktualizacje apt
, w pewnym momencie spróbuje naprawić jądro, zawiedzie, a proces aktualizacji zakończy się z zaleceniem błędu, a następnie pojawi się komunikat, że system jest aktualny.
Wszelkie działania aktualizacyjne apt
kończą się następująco:
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E: apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
Jądro
Praktycznie ten sam problem został opisany w pytaniu na Ask Ubuntu . Przyjęta odpowiedź wskazywała na problem z dpkg
plikiem statusu. Wpis statusu dla linux-image-3.2.0-4-amd64
powiedział, że jest w połowie skonfigurowany.
Jako pierwszy krok spróbowałem:
administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed
Ponowna instalacja nie pomogła, więc wskazuje na uszkodzenie.
Rozwiązanie Ask Ubuntu polegało na usunięciu wpisu z dpkg
pliku statusu, a następnie ponownej instalacji. W moim przypadku to też nie działało. Po zakończeniu procesu dpkg
plik statusu zastąpił wpis innym, który wciąż mówi, że jest w połowie skonfigurowany, a zachowanie systemu było takie samo.
Wyjście Apt
Koncentrując się na komunikatach o błędach na apt
wyjściu. Błędy zawsze zaczynają się od:
/usr/sbin/update-initramfs.orig.initramfs-tools - command not found
Rzeczywiście, ten plik nie istnieje. Pomocny komunikat informuje, że można go zainstalować, instalując initramfs-tools
. To było już zainstalowane, ale zainstalowałem go ponownie. Okazuje się, że apt
robił to już sam. Wszystkie komunikaty o błędach zgodne z instrukcjami instalacji initramfs-tools
są generowane przez tę próbę instalacji, która nigdy nie skutkuje /usr/sbin/update-initramfs.orig.initramfs-tools
instalacją.
Podsumowanie
- Mam najnowsze dostępne jądro Linuksa z repozytorium Wheezy. Jest to dobry egzemplarz, wszystkie zależności są spełnione i nie ma raportów o innych użytkownikach mających z tym problemy.
- System zgłasza, że nie jest w pełni skonfigurowany. Nie znalazłem sposobu, aby go skonfigurować lub sprawić, że system przestanie myśleć, że tak nie jest.
źródło
/etc/kernel/postinst.d/initramfs-tools
? Powinien próbować się załadować/usr/sbin/update-initramfs
, a nie/usr/sbin/update-initramfs.orig.initramfs-tools
. Jeśli plik/usr/sbin/update-initramfs
istnieje, spróbujsudo ln -s /usr/sbin/update-initramfs{,.orig.initramfs-tools}
ponownie uruchomić aktualizację.Odpowiedzi:
Rozkład
Wyjaśnienie
Po uzyskaniu lepszego obrazu systemu fixer1234 na czacie , stwierdziłem, że zainstalowany pakiet
live-tools
jest w konflikcieinitramfs-tools
.Po
live-tools
zainstalowaniu zastępuje/usr/sbin/update-initramfs
własny skrypt i wstawia oryginał/usr/sbin/update-initramfs.orig.initramfs-tools
.live-tools
ma pewne testy poprawności, które wykrywają, czy jest w systemie na żywo. Jeśli nie ma go w systemie na żywo i jest w systemie zainstalowanym, próbuje uruchomić/usr/sbin/update-initramfs.orig.initramfs-tools
, co jest poprawnym skryptem do aktualizacji initramfs.W systemie fixer1234
/usr/sbin/update-initramfs.orig.initramfs-tools
zostały usunięte.Ponieważ system jest zainstalowanym systemem,
live-tools
prawdopodobnie nie jest potrzebny, dlatego zaleciłem jego usunięcie.Oto jak działa każdy krok zaproponowany w powyższej sekcji „Rozwiązanie”:
sudo apt-get remove live-tools
Usunięcie
live-tools
spróbuje przywrócić z/usr/sbin/update-initramfs.orig.initramfs-tools
powrotem/usr/sbin/update-initramfs
, ale ponieważ/usr/sbin/update-initramfs.orig.initramfs-tools
nie istnieje, wystąpi błąd.live-tools
będą nadal usuwane i to jest najważniejsze.Wciąż brakuje
/usr/sbin/update-initramfs
.sudo apt-get install --reinstall initramfs-tools
Aby przywrócić
/usr/sbin/update-initramfs
, ponownie instalujemy pakiet, który zawiera ten plik. Mianowicieinitramfs-tools
.sudo apt-get install -f
Instalacja jądra była niekompletna z powodu zdarzeń losowych z
live-tools
ainitramfs-tools
, tak aby zakończyć instalację i rozwiązać wszystkie problemy pakiet potrzebny jest ten ostatni krok.Teraz powinieneś mieć w pełni funkcjonujący system Debian.
(Nawiasem mówiąc, te kroki teoretycznie działają na Debian 8, Ubuntu 12.04, Ubuntu 14.04, Ubuntu 15.10, Ubuntu 16.04 i Ubuntu 16.10.)
źródło