Nicht genügend freier Speicherplatz beim Upgrade


142

Ich erhalte eine Fehlermeldung im Software-Updater, wenn ich versuche, meine täglichen Updates durchzuführen. es sagt:

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`.

Ich habe versucht, etwas sudo apt-get cleanin das Terminal einzugeben, aber ich bekomme immer noch die Nachricht. Alle Seiten, die ich lese, scheinen für erfahrene Ubuntuers zu sein. Ich verwende Ubuntu 12.10. Ich möchte auf 13.04 upgraden, aber ich muss diese zuerst beenden.

Dies ist die Ausgabe vom Eintippen cat /etc/fstabin das Terminal:

# /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:~$ 

Ausgabe von 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:~$ 

Und dpkg -l | grep linux-imagegibt:

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

1
Auch der Inhalt Ihrer / etc / fstab kann hilfreich sein. Es sieht so aus, als ob / boot auf einer separaten Partition gemountet ist.
Chuck R

1
Wie @Githlar sagt, kann Ihre fstab uns Informationen über Ihre Festplattenpartitionen geben.
ssoto

1
fstab ist eine Datei, die Informationen zu den Partitionen enthält, die beim Starten des Computers bereitgestellt werden. Geben Sie cat /etc/fstabein Terminal ein, um den Inhalt dieser Datei anzuzeigen. Kopieren Sie die Ausgabe und fügen Sie sie Ihrer Frage hinzu (Sie können Ihre Frage bearbeiten). Kopieren Sie auch die Ausgabe von df -hund dpkg -l | grep linux-image.
Alaa Ali

1
Ihr Problem ist, dass alle zusätzlichen linux-image...Dateien in der /bootPartition Speicherplatz belegen - Sie haben nur 6 MB auf der Partition frei. sudo dpkg -P purge 'older_linux_image_filename'um alle bis auf die neuesten Versionen zu entfernen = 3.5.0-28.48 und 3.5.0-26.42 Damit sollten Sie aktualisieren / upgraden können.
Douggro

2
Ich musste einfach laufen sudo apt-get autoremove, um das zu beheben.
Juampy NR

Antworten:


192

Hinweis: Diese Antwort ist eher eine "Erklärung" als die beste / einfachste Möglichkeit, alte Kernel zu entfernen. Die besten / einfachsten Methoden zum Entfernen alter Kernel finden Sie in den anderen Antworten.

Okay, aus der von /etc/fstabIhnen geposteten Ausgabe geht hervor, dass Ihre /bootauf einer separaten Partition gemountet ist, und aus der Ausgabe von df -hist diese Partition voll. Dies liegt daran, dass alte Kernel installiert sind, die nicht benötigt werden. Sie können dies anhand der von dpkg -l | grep linux-imageIhnen veröffentlichten Ausgabe erkennen , in der Sie mehr als ein " Linux-Image " mit verschiedenen Versionen sehen. Wir müssen die alten Versionen entfernen.

Zuerst möchte ich, dass Sie den Befehl uname -rin einem Terminal ausführen. Dies zeigt Ihnen die Kernel-Version, die Sie gerade verwenden. Wir wollen diese Kernel-Version niemals entfernen. Der Befehl sagt so etwas . Notieren Sie sich diese Nummer ! Bei den folgenden Befehlen wird davon ausgegangen, dass dies der Kernel ist, den Sie ausführen.3.5.0-26-generic26

Der Befehl zum Entfernen einer alten Kernelversion lautet:

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

... wobei die x Zeichen Zahlen sind. In Ihrem Fall müssten wir, da Sie viele alte Versionen (17, 18, 19 usw.) haben, diesen Befehl für jede der Versionen ausführen:

  • 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

...und so weiter. Aber es gibt eine Möglichkeit, dies alles mit einem einzigen Befehl zu erledigen. Der Befehl lautet wie folgt ( BEFEHL NOCH NICHT AUSFÜHREN! Folgendes lesen. ):

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

Dieser Befehl entfernt die in den Klammern angegebenen Versionen. Ich habe die Versionen 25, 26 und 28 aus folgenden Gründen nicht aufgenommen:

  • 26 offensichtlich nicht enthalten, da dies die Kernel-Version ist, die Sie gerade ausführen! Das ist die Version, die wir vom Befehl bekommen haben uname -r, erinnerst du dich? Das wollen wir nie entfernen!
  • 28 wurde nicht berücksichtigt, da dies diejenige ist, auf die Ihr Upgrade aktualisieren wollte (das können Sie am iFStatus erkennen, der als nächste angezeigt wird, dh, es ist "halb konfiguriert").
  • 25 wurde nicht berücksichtigt, da es normalerweise empfehlenswert ist, mindestens eine alte Version zu belassen. Da Sie also 26 ausführen, behalten wir 25 bei, sodass wir es nicht in den obigen Befehl aufnehmen.

Wenn die letzte Zahl in uname -r26 (oder 28 oder sogar 25) ist, ist es sicher, den obigen Befehl auszuführen. Geben Sie Ihr Kennwort ein, wenn Sie dazu aufgefordert werden, und geben Sie es ein, ywenn Sie dazu aufgefordert werden. Dies wird eine Reihe von Zeilen anzeigen und schließlich (in Ihrem Fall matty@matty-G41M-ES2L:~$) zur Eingabeaufforderung zurückkehren , hoffentlich ohne Fehler. Wenn es fertig ist, df -hschauen Sie sich die letzte Zeile an, die mit beginnt /dev/sda1. Sie sollten feststellen, dass jetzt mehr Speicherplatz zur Verfügung steht und der verwendete Prozentsatz weniger als 100% beträgt. Sie können nun wieder mit Ihrem Update fortfahren.


1
Es funktionierte!!! Vielen Dank! Bonusfrage: Als ich Ubuntu zum ersten Mal heruntergeladen habe, habe ich versehentlich den Ordner "pictures" im Home-Bereich gelöscht. Aus diesem Grund befindet sich an der Seite keine Registerkarte "Bilder". Ich habe das umgangen, indem ich nur einen Ordner mit dem Namen "pictures" erstellt habe, der jedoch nicht in der Seitenleiste angezeigt wird. Wissen Sie, wie Sie es dorthin bringen können? Ich versuchte zu klicken und zu ziehen, aber ohne Erfolg. @Alaa
carmatt95

3
Bitte! Erstellen Sie für die andere Frage eine andere Frage, und ich werde sie beantworten. Auf diese Weise können Leute, die nach diesem Problem suchen, es finden.
Alaa Ali

13
Ich wünschte, ich könnte das jedes Mal verbessern, wenn ich darauf zurückkomme ... es würde inzwischen eine Menge haben.
Sevenseacat

4
yep, hierher zurück, um auf dasselbe zu verweisen. Man könnte meinen, ich würde mich jetzt daran erinnern.
Sevenseacat

2
Ein prägnanterer Befehl zum sudo apt-get autoremove --purge
Löschen

42

Sie können Ubuntu-Tweak installieren. Gehen Sie zum Installieren folgendermaßen vor:

Öffnen Sie das Terminal. Fügen Sie das erforderliche Repository mit dem Befehl hinzu:

sudo add-apt-repository ppa:tualatrix/ppa

Aktualisieren Sie die Softwareliste mit dem Befehl:

sudo apt-get update

Zum Schluss installieren Sie Ubuntu Teak mit dem Befehl:

sudo apt-get install ubuntu-tweak

Danach öffne den Bindestrich und tippe "ubuntu tweak" ein.

Gehen und dann auf janitorRegisterkarte und wählen Apps, Personalund die SystemKontrollkästchen und klicken Sie auf cleanSchaltfläche unten rechts.


9
Viel besser als mit der Kommandozeile herumzuspielen und zu versuchen, alle Kernel zu löschen, die aber nicht aktuell sind, wenn sie sogar unterschiedliche Versionen haben (nicht nur -32 am Ende) und auch -extra Pakete. Ubuntu Tweak hat mir 5 Minuten gespart, danke!
POMATu

Viel bequemer.
Saeed Amiri

Ich konnte den PPA nicht hinzufügen, aber ich habe ihn .debvon der Website des Projektes ubuntu-tweak.com
Luigi Siri

Keine Notwendigkeit, PPA auf Ubuntu 14.04
Edward Torvalds

1
@edwardtorvalds Natürlich können Sie es installieren, ohne die PPA für 14.04 und 14.10 durch das .debPaket hinzuzufügen , aber es ist nicht das Beste. Der Grund, warum Sie dies über den PPA installieren möchten, ist, dass Updates sichergestellt sind.
α14sнιη

17

In seiner Antwort auf die Frage, wie ich mehr Speicherplatz in / boot freimachen kann, hat @Lekensteyn auf eine schnelle Möglichkeit hingewiesen, alle nicht verwendeten Kernel und Header (mit Ausnahme des aktuell ausgeführten Kernels) zu entfernen . :

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

Dies sollte genügend Speicherplatz für das Upgrade freigeben.



3

Auf meinem Ubuntu-Heimsystem verfolge ich eine ähnliche Methode wie auf dem veröffentlichten, aber sie ist etwas einfacher und löscht mehr Speicherplatz, einschließlich Kernel-Headern usw.

  1. Ich überprüfe, welchen laufenden Kernel ich verwende, da es unbedingt erforderlich ist, dies nicht zu stören.

    uname -a
    
  2. Dann schaue ich auf / boot mit dem Ziel, alle kernelbezogenen Dateien zu entfernen, die nicht direkt mit dem laufenden Kernel zusammenhängen. Dies gibt mir eine Liste aller Kernelversionen, die ich entfernen möchte, zum Beispiel: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Jetzt nehme ich die erste Kernelversion in meine Bereinigungsliste und finde alle damit verbundenen Pakete.

    dpkg -l | grep 3.5.0-17
    
  4. Löschen Sie sie aus dem System

    sudo apt-get purge <list of packages separated by spaces>
    
  5. gehe zurück zu 3 und wähle die nächste Kernelversion in meiner Bereinigungsliste aus.

  6. Getan


1

Ich habe diesen Fehler bekommen, dieser Artikel hat geholfen.

Früher habe ich df -hfestgestellt, dass der Start uname -rfür die Version voll war , dann habe ich die purgeoben aufgeführte Zeichenfolge verwendet, um alte Kernel zu entfernen. single kernel purge hat funktioniert, multi nicht (bei mir).

Ich habe die Dateien in der Windows-Sache gefunden; Ich konnte sie nicht löschen, musste das Terminal benutzen, aber es zeigte mir die alten Versionen, die ich dort hatte.

Ich habe keine Ahnung, warum / boot (sda2) überhaupt partitioniert ist und warum es so klein ist. aber jetzt kann ich den Ubuntu-Updater wieder benutzen.

Ich habe mit einigen kleinen Erfolg haben sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, auch freie Software BleachBit versucht. Verwenden Sie die Bereinigungszeichenfolge, jedoch nicht für Ihre aktuelle Version. Hoffe das hilft jemandem.


Bearbeiten: Ich glaube nicht, dass Sie "-generic" zur Bereinigungszeichenfolge hinzufügen müssen
Brian P

0

Haben Sie alte Kernel-Image-Pakete installiert, die nicht verwendet werden? Diese können Speicherplatz auf / boot belegen. Ich würde empfehlen, die installierten Kernelpakete mit einem Befehl wie dem folgenden zu überprüfen:

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

Das sollte einen Überblick über die installierten Kernel-Image-Pakete geben. Für diejenigen Linux-Image- Pakete, die nicht verwendet werden und die für Wiederherstellungszwecke voraussichtlich nicht benötigt werden, z. B. möchte ich mindestens eine Kernel-Version hinter der aktiven installierten Version für die Wiederherstellung aufbewahren. Andernfalls Sie können solche nicht verwendeten Pakete mit Ihrem bevorzugten Verpackungstool, z. B. aptitude, entfernen.

Ich würde auch empfehlen, einen Blick auf die zugehörigen Inux-Header , Linux-Image-Extras (falls zutreffend), auch Linux-Source- und Linux-Tools- Pakete zu werfen , die möglicherweise zusammen mit nicht verwendeten Linux-Image- Paketen installiert werden.


0

Ich bezweifle, dass viele, wenn überhaupt, auf dieses Problem stoßen werden, aber ich stelle es hier zur Dokumentation auf, falls jemand es benötigt.

Mein Problem ist, dass ich verschiedene benutzerdefinierte Kernel kompiliert habe, bis mir der Speicherplatz ausgegangen ist. Die Art und Weise, wie ich den Speicherplatz bereinigen musste, bestand darin, jedes Kernelverzeichnis, in dem ich gearbeitet hatte, aufzurufen und ein sudo make clean.

  • $ cd /usr/src Verzeichnis, in dem sich die Kernelquelle befindet
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

Die Antwort von marianoju hat mir sehr geholfen, außer dass ich einen Fehler bei der Verwendung bekommen habe apt purge. Ich konnte keine Force-Option finden.

Durch das Kombinieren des unteren Levels von dpkg konnte ich fortfahren:

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

0

Sie können mit dem folgenden Befehl versuchen, alte Kernel-Image-Pakete zu entfernen, wenn Sie diese Dinge haben.

sudo apt autoremove

Danach können Sie ein Update durchführen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.