Błąd pełnego dysku twardego: apt-get nie może zainstalować lub usunąć

24

Podczas aktualizacji mojego serwera Ubuntu 12.04 napotkałem następujący błąd. Teraz apt-getnie można zainstalować ani usunąć żadnego pakietu.

Rozpakowywanie linux-headers-3.13.0-62 (z ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precision1_all.deb) ...
dpkg: przetwarzanie błędów /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 nie można utworzyć `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(podczas przetwarzania `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): Brak miejsca na urządzeniu 
Nie zapisano raportu przypisania, ponieważ komunikat o błędzie wskazuje dysk pełny błąd
 dpkg-deb: błąd: pasta podprocesu została zabita przez sygnał (uszkodzona rura)
Napotkano błędy podczas przetwarzania:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Podproces / usr / bin / dpkg zwrócił kod błędu (1)

Chociaż tak naprawdę nie brakuje mi miejsca na dysku,

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

W każdym razie moje i-węzły są pełne,

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

Mam więcej niż dziesięć starych jąder, ale nie jestem w stanie ich usunąć, ponieważ apt-getsam jestem kulawy. Nie mogę więc śledzić tego postu, który zgłasza podobny problem.

Jedyną opcją wydaje się ręczne usunięcie kilku starszych jąder. Czy spowoduje to jakiś problem?

Czy jest jakieś lepsze wyjście? Czy mogę na razie wykorzystać zarezerwowane miejsce na rootowanie i usunąć starsze jądra?

souravc
źródło
1
Rzeczywiście ręcznie usunąłem kilka starszych jąder, /usr/srcaby pozbyć się tej sytuacji. Na szczęście wszystko poszło dobrze i aptznów zaczęło działać. Ale poproszę cię o wycofanie się przed zrobieniem czegoś takiego na maszynie produkcyjnej. Zrobiłem to na maszynie wirtualnej, która miała pełną kopię zapasową.
souravc,
To działa! Zrobiłem to samo tutaj (ubutu 14.04.1), aby zaktualizować do jądra 4.4.0-51-generic. Po prostu nie jestem pewien, czy spowoduje to jakiś problem w przyszłości. Dzięki.
Moreno,

Odpowiedzi:

36

Wiem, że ten post jest trochę stary, ale znalazłem tutaj odpowiedź dla każdego, kto może natknąć się na ten post: https://help.ubuntu.com/community/RemoveOldKernels

W przypadku uszkodzenia tego linku, oto odpowiedni fragment:

Bezpieczne usuwanie starych jąder

Dla użytkowników systemów LVM, systemów szyfrowanych lub systemów o ograniczonej pamięci masowej najczęstszym problemem jest to, że partycja / boot jest po prostu pełna. Menedżer pakietów nie może zainstalować oczekującego uaktualnienia z powodu braku miejsca. Poza tym apt-get nie może usunąć pakietu z powodu przerwanej zależności.

Ten problem można szybko i łatwo rozwiązać za pomocą powłoki. Wystarczy zidentyfikować jedno lub dwa stare jądra do ręcznego usunięcia, co zapewni menedżerowi pakietów wystarczającą ilość miejsca do zainstalowania aktualizacji w kolejce.


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

Śledziłem to z:

sudo apt-get autoremove --purge
Junkle
źródło
9

Znalazłem wyjście z sytuacji i usunąłem kilka starszych jąder, /usr/srcaby pozbyć się sytuacji. Na szczęście wszystko poszło dobrze i apt znów zaczął działać.

Zdecydowanie zaleca się wznowienie pracy przed usunięciem starszych jąder na maszynie produkcyjnej.

souravc
źródło
Wszelkie lepsze rozwiązania są nadal mile widziane. Publikuję ten komentarz jako odpowiedź, ponieważ może komuś pomóc.
souravc
1
Po usunięciu niektórych starych jąder oraz uruchomieniu apt-get autoremove i zainstalowaniu niektórych zależności apt-get -f installnaprawiłem moje problemy
Thamaraiselvam
DZIĘKUJĘ CI. Usunąłem cały linux- * pod, /bootale go nie użyłem, dkpgwięc nadal były *-headerpliki/usr/src
Dylan Pierce