apt-get: Brak miejsca na urządzeniu (12.04)

42

Przeczytałem każdy wątek, który udało mi się znaleźć - nawet te, które mówią, że na pytanie udzielono odpowiedzi gdzie indziej, ale żaden z nich nie dotyczy konkretnego problemu, który mam. Menedżer aktualizacji uruchomił się i wygenerował błędy związane z niezaspokojoną zależnością i zasugerował użycie apt-get install -f, który kończy się niepowodzeniem z tym komunikatem:

Unpacking linux-headers-3.5.0-36 (from .../linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h.dpkg-new' (while processing `./usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h'): No space left on device

Podejrzewam, że ostatnie 5 słów Brak miejsca na urządzeniu jest znaczący, ale zarówno df, jak i du pokazują odpowiednią przestrzeń. Zastanawiam się więc, które urządzenie potrzebuje więcej miejsca?

Ouput z df -h

Filesystem 
Size Used Avail Use% 
Mounted on /dev/sda1 5.5G 4.4G 786M 86% 
/ udev 996M 4.0K 996M 1% 
/dev tmpfs 402M 880K 401M 1% 
/run none 5.0M 0 5.0M 0% /run/lock none 1004M 156K 1004M 1% 
/run/shm /dev/sdb1 30G 1.4G 27G 5% 
/home /dev/sdc1 299G 31G 268G 11% /media/HD-PCTU2 
Don A.
źródło
Czy masz miejsce na partycji root?
don.joey
1
Wklej (i) dane wyjściowe df -hi (ii) dane wyjściowe mount. dpkg wyczyści pliki po zakończeniu pracy, więc może się wydawać, że masz wystarczająco dużo miejsca, a tak naprawdę nie. Rozważ uruchomienie apt-get cleanprzed uruchomieniem dpkg.
stycznia
1
monitorować zrobić watch -n 1 df -hw terminalu podczas robienia apt-get install(to trochę spowolni ciebie we / wy, ale będziesz wiedział, który system plików jest zbyt mały)
Emmanuel
Problem występujący również z Ubuntu 14.04 i jądrem wersji 3.13.0.108 na jednym komputerze na trzy. Zacząłem od askubuntu.com/questions/223143/…, ale odpowiedzi tutaj pokazane są w tej samej linii.
XavierStuvw

Odpowiedzi:

48

Właśnie spotkałem ten sam problem. Gdzie indziej natknąłem się na wzmiankę o i-węzłach i uruchomiłem terminal, aby sprawdzić użycie i-węzła:

  df -i 

To pokazało zużycie i-węzłów na 99%. Tak więc, chociaż na moim dysku pozostało dużo miejsca, nie byłem w stanie utworzyć więcej plików z powodu ograniczenia liczby i-węzłów. Niektóre czyszczenie dysku było rozwiązaniem mojego problemu.

Kevin
źródło
6
Miałem ten sam problem spowodowany aktualizacjami jądra, które nie usuwają automatycznie starych jąder. Nagłówki Linuksa każdej aktualizacji jądra zajmują znaczną liczbę i-węzłów! --- Moje rozwiązanie „bezpieczne” było przesunąć dwa nagłówki jądra katalogów do innego systemu plików: cd /usr/src ; cp -a linux-headers-3.2.0-3{2,3}* /home/tmp-hdr ; rm -r linux-headers-3.2.0-3{2,3}*, apt-get-install -f, usunąć niektóre inne nagłówki właściwą drogę: apt-get purge linux-headers-...przesuń nagłówki z tyłu tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Usuń więcej starych jąder za pomocą apt-get purge.
pabouk
1
Proszę wziąć pod uwagę udział w raportach błędów z małą aktywnością: Bug # 1089195 linux-headers zje twoje i- węzły na LTS. , Błąd # 690911 Instalacja bez formatowania nie usuwa starych jąder
pabouk
@pabouk Zastanawiam się, czy mógłbyś użyć dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installtego, aby nie było potrzeby kopiowania?
jarno
@jarno Minęło sporo czasu, ale myślę, że wszystkie polecenia korzystające z dpkg lub apt bazy danych zawiodły. Myślę, że było to spowodowane zepsutymi zależnościami i innymi niespójnościami spowodowanymi niewystarczającą liczbą i-węzłów podczas automatycznej aktualizacji.
pabouk
Wymagane czyszczenie dysku można wykonać sudo linux-purge --fixpo opublikowaniu skryptu .
jarno
37

Myślę, że twoja partycja rozruchowa jest pełna starych obrazów jądra, nie pozostawiając miejsca na nową, którą apt-getpróbuje zainstalować. Możesz pisać

dpkg -l linux-headers-\* linux-image-\* | grep ^ii

do okna terminala. Kiedy to robię, rozumiem

ii  linux-headers-3.8.0-18                    3.8.0-18.28                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-18-generic            3.8.0-18.28                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-19                    3.8.0-19.30                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-19-generic            3.8.0-19.30                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-21                    3.8.0-21.32                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-21-generic            3.8.0-21.32                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-22                    3.8.0-22.33                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-22-generic            3.8.0-22.33                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-23                    3.8.0-23.34                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-23-generic            3.8.0-23.34                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-25                    3.8.0-25.37                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-25-generic            3.8.0-25.37                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-generic                     3.8.0.25.43                            amd64        Generic Linux kernel headers

Ponieważ mam ich sporo, mogę usunąć niektóre z najstarszych

sudo apt-get remove linux-headers-3.8.0-18

Jeśli się apt-getnie powiedzie, ponieważ pomija niektóre zależności pakietu (których nie można zainstalować z powodu braku wolnych i-węzłów), można dpkgzamiast tego skorzystać bezpośrednio:

sudo dpkg --remove linux-headers-3.8.0-18

Zrób to kilka razy do swojego najstarszego linux-headers-*i powinieneś mieć miejsce.

Marc
źródło
4
Ujawnia to drugą kwestię. Za każdym razem, gdy próbuję uruchomić dpkg, mówi mi, że ma niezaspokojoną zależność Następujące pakiety mają niezaspokojone zależności: linux-headers-3.5.0-36-generic: Zależy: linux-headers-3.5.0-36 zostanie zainstalowany i to jest to, czego nie można zainstalować, ponieważ nie ma wystarczającej ilości miejsca
Don A
Być może kopia zapasowa plików użytkownika jest w porządku, zanim zadzwonisz z partycją rozruchową? Nigdy nie miałem z tym problemu, ale gdybym to zrobił, miałbym wszystko, czego potrzebowałem do ponownej instalacji. Oczywiście i tak robię kopię zapasową każdego dnia.
Marc
Miałem nadzieję, że nie będę musiał zadzierać z partycją rozruchową i że istnieje sposób na wyjście z niekończącego się cyklu zależności. Widzę teraz, że prawdopodobnie łatwiej będzie wykonać kopię zapasową danych i zacząć od nowa. Teraz, gdy wiem, jak ważne jest czyszczenie starszych przedmiotów, nawyknę. Dziękujemy wszystkim za pomoc.
Don A
Ani trochę . . . tworzenie kopii zapasowych jest zawsze dobrym pomysłem, a tak naprawdę nie zaśmiecasz partycji rozruchowej, po prostu odinstalowujesz niektóre pakiety za pomocą apt-get. To powinien być bułka z masłem. Właśnie zasugerowałem utworzenie kopii zapasowej danych, ponieważ zawsze sugeruję utworzenie kopii zapasowej danych, jeśli masz problem (a nawet jeśli nie masz!) Właściwie uruchomiłem te polecenia w moim systemie, aby je przetestować. Usunięcie zajęło mi trzy minuty linux-headers-3.8.0-18.
Marc
1
Jeśli znowu się nie powiedzie sudo dpkg --remove linux-headers-3.8.0-18, usuń sudo dpkg --remove linux-headers-3.8.0-18-generici zabierze ze sobą drugi nagłówek.
Theson,
16

Użyłem sudo apt-get autoremovei usunąłem kilka starych pakietów nagłówków jądra. Po tym dobrze.

Frank Sfalanga Jr.
źródło
W moim przypadku apt-get odmówił autorowi nadania pierwszeństwa faktowi, że istnieje zepsuty pakiet do rozwiązania. Który uszkodzony pakiet został spowodowany nasyceniem i-węzła. Zobacz także ten wątek
AskUbuntu
To mnie właśnie uratowało! Po aktualizacji moja sesja x nigdy nie wchodziła, tylko z prośbą o zalogowanie się ponownie i często otrzymywałem komunikat o braku miejsca. Myślałem, że muszę sformatować
dysk twardy
1
Lol Nie mogę tego uruchomić, ponieważ mam za dużo plików ...
Brian Leishman,
2

O ile mi wiadomo, limit i-węzłów w systemach plików Linux ext * wynosi około 4 miliardów, ale nie mniej, co stanowi ogromną liczbę plików. Problem polega na tym, że coś generuje wiele plików. Mogę zaproponować Ci sprawdzenie najpierw: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Więc znajdziesz to, co wypełnia i-węzły twojego FS. Mogę również zaproponować wyczyszczenie apt cache:

sudo apt-get clean

i

sudo apt-get autoclean
Stefan
źródło