Za mało wolnego miejsca na dysku podczas aktualizacji

142

Podczas próby codziennych aktualizacji pojawia się błąd podczas aktualizacji oprogramowania. to mówi:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

Próbowałem pisać w sudo apt-get cleanterminalu, ale wciąż otrzymuję wiadomość. Wszystkie strony, które czytam, wydają się być przeznaczone dla doświadczonych Ubuntuers. Używam Ubuntu 12.10. Chcę uaktualnić do 13.04, ale rozumiem, że muszę je najpierw ukończyć.

Oto wynik wpisywania w cat /etc/fstabterminalu:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Wyjście df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

I dpkg -l | grep linux-imagedaje:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
carmatt95
źródło
1
Również zawartość twojego / etc / fstab może być pomocna. Wygląda na to, że / boot jest zamontowany na osobnej partycji.
Chuck R
1
Jak mówi @Githlar, twój fstab może dostarczyć nam informacji o twoich partycjach HD.
ssoto
1
fstab to plik zawierający informacje na temat partycji zamontowanych podczas uruchamiania komputera. Aby wyświetlić zawartość tego pliku, wpisz cat /etc/fstabterminal. Skopiuj wynik i dodaj go do swojego pytania (możesz edytować swoje pytanie). Skopiuj również dane wyjściowe df -hi dpkg -l | grep linux-image.
Alaa Ali
1
Twój problem polega na tym, że wszystkie dodatkowe linux-image...pliki na /bootpartycji zajmują więcej miejsca - masz tylko 6 MB wolnego miejsca na partycji. sudo dpkg -P purge 'older_linux_image_filename'usunąć wszystkie wersje oprócz najnowszych = 3.5.0-28.48 i 3.5.0-26.42 Powinno to pozwolić na aktualizację / aktualizację.
douggro
2
Musiałem po prostu biec, sudo apt-get autoremoveżeby to naprawić.
Juampy NR

Odpowiedzi:

192

Uwaga: ta odpowiedź ma być raczej „wyjaśnieniem” niż najlepszym / najprostszym sposobem na usunięcie starych jąder. Aby znaleźć najlepszy / najprostszy sposób na usunięcie starych jąder, przejrzyj pozostałe odpowiedzi.

Okej, więc z danych /etc/fstabopublikowanych przez Ciebie wynika, że /bootjest on zamontowany na osobnej partycji, a z danych wyjściowych df -hta partycja jest pełna. Jest tak, ponieważ są zainstalowane stare jądra, które nie są potrzebne; możesz to stwierdzić, patrząc na dane wyjściowe dpkg -l | grep linux-image, które opublikowałeś, gdzie możesz zobaczyć więcej niż jeden „ obraz linuksowy ” z różnymi wersjami. Musimy usunąć stare wersje.

Najpierw chcę, abyś uruchomił polecenie uname -rw terminalu, to pokaże wersję jądra, której obecnie używasz. Nigdy nie chcemy usuwać tej wersji jądra. Polecenie powie coś takiego . Zanotuj ten numer ,! Następujące polecenia zakładają, że to jest jądro, z którego korzystasz.3.5.0-26-generic26

Polecenie usunięcia starej wersji jądra to:

sudo apt-get purge linux-image-x.x.x-xx-generic

... gdzie x to cyfry. Tak więc w twoim przypadku, ponieważ masz wiele starych wersji (17, 18, 19 itd.), Musielibyśmy uruchomić to polecenie dla każdej z wersji, tak jak to:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...i tak dalej. Ale istnieje sposób, aby to wszystko zrobić za pomocą jednego polecenia. Polecenie jest następujące ( NIE URUCHAMIAJ JESZCZE POLECENIA! Przeczytaj poniższe. ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

To polecenie usunie wersje wymienione w nawiasach. Nie uwzględniłem wersji 25, 26 i 28 z następujących powodów:

  • Oczywiście nie dodałem 26, ponieważ jest to wersja jądra, którą obecnie uruchomiłeś! To jest wersja, którą otrzymaliśmy z polecenia uname -r, pamiętasz? Nigdy nie chcemy tego usuwać!
  • Nie uwzględniono 28, ponieważ właśnie to uaktualnienie próbowało uaktualnić (można to stwierdzić po iFstatusie obok, co oznacza, że ​​jest w połowie skonfigurowane).
  • Nie uwzględniono 25, ponieważ zazwyczaj dobrą praktyką jest pozostawienie co najmniej jednej starej wersji. Ponieważ masz 26 lat, zachowamy 25, więc nie uwzględnimy tego w powyższym poleceniu.

Jeśli więc ostatnia liczba uname -rto 26 (lub 28, a nawet 25), wówczas można bezpiecznie wykonać powyższe polecenie. Po wyświetleniu monitu wprowadź hasło i wpisz je na yżądanie. Spowoduje to wyświetlenie szeregu wierszy i ostatecznie wróci do wiersza polecenia (w twoim przypadku matty@matty-G41M-ES2L:~$), miejmy nadzieję bez błędów. Po df -hzakończeniu zrób i spójrz na ostatnią linię, zaczynającą się od /dev/sda1. Powinieneś przekonać się, że ma teraz więcej miejsca i że użyty procent jest mniejszy niż 100%, jak wcześniej. Możesz teraz kontynuować aktualizację ponownie.

Alaa Ali
źródło
1
Zadziałało!!! Dzięki wielkie! Dodatkowe pytanie: kiedy po raz pierwszy pobierałem Ubuntu, przypadkowo usunąłem folder „images” w obszarze domowym. Z tego powodu z boku nie ma zakładki „zdjęcia”. Ominąłem to, tworząc folder o nazwie „obrazy”, ale nie pojawia się on na pasku bocznym. Czy wiesz, jak to zrobić? Próbowałem klikać i przeciągać, ale bezskutecznie. @Alaa
carmatt95
3
Nie ma za co! W przypadku drugiego pytania utwórz kolejne pytanie, a ja odpowiem na nie. W ten sposób ludzie, którzy szukają tego problemu, mogą go znaleźć.
Alaa Ali
13
Chciałbym móc to głosować za każdym razem, gdy wrócę, aby o tym wspomnieć ... do tej pory miałoby dużo.
sevenseacat
4
tak, wróć tutaj ponownie, aby odwołać się do tego samego. Można by pomyśleć, że już to zapamiętam.
sevenseacat
2
Bardziej zwięzłe polecenie oczyszczenia wszystkich starych jąder to:sudo apt-get autoremove --purge
ctrueden
42

Możesz zainstalować Ubuntu-Tweak. Aby zainstalować, wykonaj następujące kroki:

Otwórz terminal. Dodaj wymagane repozytorium za pomocą polecenia:

sudo add-apt-repository ppa:tualatrix/ppa

Zaktualizuj listę oprogramowania za pomocą polecenia:

sudo apt-get update

Na koniec zainstaluj Ubuntu Teak za pomocą polecenia:

sudo apt-get install ubuntu-tweak

Następnie otwórz myślnik i wpisz „ubuntu tweak”.

A następnie przejdź do janitorkarty i wybierz Apps, Personala następnie Systemzaznacz pola wyboru i kliknij cleanprzycisk w prawym dolnym rogu.

αғsнιη
źródło
9
O wiele lepsze niż bałagan w wierszu poleceń i próba usunięcia wszystkich jąder, ale nie aktualne, gdy mają nawet inne wersje (nie tylko -32 na końcu), a także -extra pakiety. Ulepszenie Ubuntu pozwoliło mi zaoszczędzić 5 minut, dzięki!
POMATu
O wiele wygodniejszy.
Saeed Amiri
Nie mogłem dodać PPA, ale ściągnąłem .debze strony proyect ubuntu-tweak.com
Luigi Siri
nie trzeba dodawać PPA na Ubuntu 14.04
Edward Torvalds
1
@edwardtorvalds Oczywiście można go zainstalować bez dodawania PPA w dniu 14.04, a także 14.10 według jego .debpakietu, ale nie jest to najbardziej preferowane. Powodem, dla którego chcesz zainstalować to za pośrednictwem PPA, jest to, że zapewnia aktualizacje.
αғsнιη
17

@Lekensteyn wskazał na szybki sposób na usunięcie wszystkich nieużywanych jąder i nagłówków (z wyjątkiem bieżącego działającego jądra) w odpowiedzi na pytanie Jak zwolnić więcej miejsca w / boot? :

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')") 

Powinno to zwolnić wystarczająco dużo miejsca na aktualizację.

marianoju
źródło
3

W moim domowym systemie Ubuntu stosuję metodę podobną do tej opublikowanej, ale jest to trochę prostsze i usuwa więcej miejsca w nagłówkach jądra itp.

  1. Sprawdzam, z jakiego działającego jądra korzystam, ponieważ jest to konieczne, aby nie ingerować w to.

    uname -a
    
  2. Następnie patrzę na / boot w celu usunięcia wszystkich plików związanych z jądrem, które nie są bezpośrednio związane z działającym jądrem. To daje mi listę wszystkich wersji jądra, które chcę usunąć, na przykład: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Teraz biorę pierwszą wersję jądra z mojej listy czyszczenia i znajduję wszystkie powiązane z nią pakiety.

    dpkg -l | grep 3.5.0-17
    
  4. Usuń je z systemu

    sudo apt-get purge <list of packages separated by spaces>
    
  5. wróć do 3 i wybierz następną wersję jądra z mojej listy czyszczenia.

  6. Gotowy

Kiat
źródło
1

Otrzymałem ten błąd, ten artykuł pomógł.

Kiedyś df -hidentyfikowałem, że rozruch był pełny, uname -rdla wersji, a następnie użyłem powyższego purgeciągu, aby usunąć stare jądra. czyszczenie pojedynczego jądra działało, multi nie (dla mnie).

Znalazłem pliki w Windowsie; Nie mogłem ich usunąć, musiałem użyć terminala, ale pokazało mi to stare wersje, które tam miałem.

Nie mam pojęcia, dlaczego / boot (sda2) jest w ogóle podzielony na partycje i dlaczego jest tak mały. ale teraz mogę ponownie użyć aktualizacji Ubuntu.

Miałem drobne sukces sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, próbował również BleachBit wolnego oprogramowania. Użyj ciągu czyszczącego, ale nie w bieżącej wersji. Mam nadzieję, że to komuś pomoże.

Brian P.
źródło
edycja: nie sądzę, że trzeba dodać „-generyczny” do ciągu oczyszczania
Brian P
0

Czy masz zainstalowane jakieś stare pakiety obrazów jądra, które nie są używane? Mogą zajmować miejsce na / boot. Polecam przejrzenie zestawu zainstalowanych pakietów jądra za pomocą polecenia, takiego jak:

dpkg -l "linux-image*" | grep "^i"

Powinno to zapewnić przegląd zainstalowanych pakietów obrazów jądra. Dla tych pakietów obrazu linux , które nie są używane i nie powinny być potrzebne do odzyskiwania - na przykład np. Chcę zachować przynajmniej jedną wersję jądra za wersją aktywną, w celu odzyskania - w przeciwnym razie, możesz usunąć takie nieużywane pakiety, używając swojego ulubionego narzędzia do pakowania, takiego jak aptitude.

Chciałbym również polecić przyjrzeniu powiązanych nagłówków inux , linux-image-extras (jeśli dotyczy), również linux-source i linux-tools pakiety, takie, które mogą być zainstalowane razem z niewykorzystanych linux-image pakietach.

Sean Champ
źródło
0

Wątpię, czy wiele osób napotka ten problem, ale umieszczam go tutaj w celu dokumentacji, na wypadek, gdyby ktoś tego potrzebował.

Mój problem polega na tym, że kompilowałem różne niestandardowe jądra, dopóki nie zabrakło mi miejsca. Sposób, w jaki musiałem posprzątać to miejsce, to wejście do każdego katalogu jądra, w którym pracowałem i uruchomienie sudo make clean.

  • $ cd /usr/src Katalog, w którym znajduje się źródło jądra
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean
Jacksonkr
źródło
0

Odpowiedź marianoju naprawdę pomogła, poza tym, że dostałem błąd przy użyciu apt purge. Nie mogłem znaleźć opcji siły.

Połączenie niższego poziomu dpkg pozwoliło mi kontynuować:

sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \
               | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
PascalVKooten
źródło
0

Możesz spróbować użyć poniższego polecenia, aby usunąć stare pakiety obrazów jądra, jeśli masz takie rzeczy.

sudo apt autoremove

Następnie możesz wykonać aktualizację

Dinusha Dilanka
źródło