Meine / boot-Partition hat 100% erreicht und kann jetzt nicht aktualisiert werden. Alte Kernel können nicht entfernt werden, um Platz zu schaffen

136

Mein erstes Problem war, als ich versucht habe, apt-get update oder apt-get upgrade . Beim Upgrade erhalte ich den folgenden Fehler:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.

Ich habe versucht, apt-get install -f auszuführen, und dies war die Ausgabe (nachdem ich die Eingabeaufforderung "ja" eingegeben hatte)

(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
 failed in write on buffer copy for backend dpkg-deb during './boot/System.map-3.2.0-27-generic': No space left on device
 No apport report written because the error message indicates a disk full error
                                                                          dpkg-deb:    error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic   /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ich habe versucht, apt-get autoremove auszuführen, und es gibt mir den gleichen Fehler wie apt-get upgrade .

Wenn ich df starte, bekomme ich das für /boot :

/dev/sda1                    233191     230297         0 100% /boot

Also las ich woanders, dass ich versuchen sollte, alte Kernel zu löschen. Ich habe überprüft, mit welchen Kernen ich hatte:

$ dpkg -l linux-image-\* | grep ^ii
ii  linux-image-2.6.38-13-server  2.6.38-13.52  Linux kernel image for version 2.6.38 on x86_64
ii  linux-image-3.0.0-13-server   3.0.0-13.22   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-14-server   3.0.0-14.23   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-15-server   3.0.0-15.26   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-16-server   3.0.0-16.29   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-17-server   3.0.0-17.30   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.2.0-24-generic  3.2.0-24.39   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-25-generic  3.2.0-25.40   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-26-generic  3.2.0-26.41   Linux kernel image for version 3.2.0  on 64 bit x86 SMP

Wenn ich versuche, den ältesten mit diesem zu entfernen:

$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be     installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Wie kann ich den Boot-Vorgang freigeben oder verlängern, ohne meine Installation zu beschädigen?

    
Strifey16 02.08.2012, 17:17
quelle

11 Antworten

113

Freigeben von Speicherplatz im Root-Dateisystem

Um Platz im Root-Dateisystem zu schaffen, können Sie apt-get clean ausführen.

Wenn das nicht funktioniert, können Sie zu /var/cache/apt/archives gehen und manuell einige Dateien aus dem Cache entfernen, um Speicherplatz freizumachen, z. B .:

sudo rm linux-headers-*

Es wird nicht schaden, alle .deb Dateien hier zu entfernen, wenn es nötig ist - das ist apt-get clean . Sie werden automatisch von apt erneut heruntergeladen, wenn sie erneut benötigt werden.

Freigeben von Speicherplatz auf dem / boot-Dateisystem

Das Original-Poster hat eine separate /boot Partition, und das ist was voll ist und verhindert, dass das apt System funktioniert. Es wird notwendig sein, dass er dort Platz frei macht.

Wenn fast genug Platz ist, gehen Sie zu /boot und entfernen Sie eine oder zwei Konfigurationsdateien:

sudo rm config-3.2.0-19-generic-pae

zum Beispiel, aber verwenden Sie den Namen einer der Kernel-Versionen, die Sie sowieso entfernen möchten. Dies wird ein wenig Platz freisetzen (ca. 144K pro Stück).

Wenn Sie mehr Speicherplatz benötigen, entfernen Sie die alten vmlinuz , initrd , abi und System.map Dateien, bis Sie genug Speicherplatz haben (ca. 22M für eine meiner i386 Kernel-Versionen).

Was immer du tust, entferne sie nicht alle . Sie sollten zumindest die letzten zwei übereinstimmenden Versionen jeder Art von Datei für jede Art von Kernel, die Sie verwenden, behalten.

Fahren Sie dann mit Ihren apt-get install-Befehlen fort. Wie oben erwähnt, müssen sie möglicherweise einige der gelöschten Debets erneut herunterladen, aber wenn dies der Fall ist, wird dies automatisch geschehen. Wenn Sie apt wieder arbeiten, bereinigen Sie apt-get, um die Pakete zu entfernen, die den entfernten Dateien entsprechen - damit alles übereinstimmt.

Die Konfigurationsdatei in /boot ist die Kernel-Konfiguration, die vom Kernel-Team verwendet wurde, um den gleichnamigen Kern zu erstellen. Es sollte unschädlich sein, es zu entfernen, es sei denn, Sie wollen es als Referenz oder um Ihnen beim Aufbau Ihrer eigenen Kernel zu helfen.

Schließlich entfernen Sie manuell ein altes Kernel-Paket oder zwei aus der /boot -Partition, um noch mehr Platz für das neue zu schaffen.

    
John S Gruber 02.08.2012, 17:54
quelle
60

In meinem Fall konnten die Befehle apt und dpkg nicht beendet werden und konnten nicht entfernt werden. Das automatische Update war bei der Installation von 2.6.32-56-server fehlgeschlagen.

Mein erster Schritt war, den zu verwendenden Raum zu identifizieren,

cd /boot
du -sk *|sort -n

Ich hatte ungefähr 30 Kernel und unterstützende Dateien.

Ich habe uname -a gemacht, um den laufenden Kernel zu bekommen, Ich habe festgestellt, dass ich auf der Linux-Alternative 2.6.32-43-server war und eine tar von 6 der Versionen, die nicht ausgeführt wurden und alt waren.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Ich habe dann rm -rf von dem gemacht, was ich gesichert hatte:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Ich zeige diese Befehle als Beispiele, Sie müssen entscheiden, mit was Sie für Ihre Situation arbeiten werden.

Nun, da ich auf /boot etwas Platz hatte, konnte ich

ausführen
apt-get -f install 

Um die fehlgeschlagene Installation von 2.6.32-56-server zu bereinigen.

Ich habe dann ein

gemacht
apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Das gab mir Raum, um das zurückzugeben, was ich gesichert hatte.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Um aufzuräumen, könnte ich dann ausführen:

apt-get autoremove

Ich habe neu gestartet und verwende jetzt 4% von /boot .

    
A.G. Russell 20.02.2014 17:48
quelle
19

Sie können dpkg anstelle von apt-get verwenden, um ältere Kernel zu entfernen:

sudo dpkg -r linux-image-3.2.0-29-generic
    
psusi 08.04.2014 16:38
quelle
9

Ich habe bemerkt, dass noch einige Dateien der alten Versionen im Boot-Verzeichnis waren:

$ ls /boot
vmcoreinfo-2.6.31-17-server

Und der Paketmanager würde die alten Versionen auflisten:

dpkg -l | grep linux-image

Ich habe daher diesen Befehl verwendet ( autoremove würde auch neuere Bilder entfernen, die ich nicht entfernen möchte)

sudo apt-get purge linux-image-2.6.31-17-server

Ich hatte noch einige Header übrig:

dpkg -l | grep linux-headers

Also habe ich das gemacht:

sudo apt-get purge linux-headers-2.6.32-34

Schließlich gab es noch ein Paket, das ich mit apt-get clean nicht entfernen konnte:

$ dpkg -l | grep linux-image
rc  linux-image-2.6.28-11-server

Quelle: Entfernen Sie ein Paket, das von dpkg als rc markiert ist

sudo dpkg --purge linux-image-2.6.28-11-server
    
mreiter 24.10.2012 15:56
quelle
2

Das habe ich benutzt:

sudo apt-get autoremove linux-image-xxxx

Mach das für alle alten Kernel und behalte nur die letzten zwei.

Wenn Sie die alten Kernel automatisch entfernen und GRUB aktualisieren möchten sieh dies: Ubuntu-Dokumentation

    
Samer 22.11.2015 18:33
quelle
2

Sie können nicht auf Pakete reagieren, aber Sie können auf andere Dateien reagieren. Gehen Sie zuerst durch Ihren Home-Ordner und sehen Sie, ob etwas vorhanden ist, das Sie löschen können. Wenn nicht, versuchen Sie, eine große Menge an Dateien auf eine andere Partition (oder ein Flash-Laufwerk) zu verschieben und versuchen Sie dann sudo apt-get install -f , um die Paketabhängigkeitsprobleme zu beheben (höchstwahrscheinlich haben Sie eine .deb-Datei über dpkg installiert) lösche alle alten Kernel. Sobald Sie mindestens 10 MB sicher haben, versuchen Sie, nicht benötigte Software oder Dateien zu löschen.

    
hexafraction 02.08.2012 17:20
quelle
1

Verwenden Sie den Synaptic-Paketmanager. Wählen Sie einfach das Paket, das Sie entfernen möchten, und Sie werden aufgefordert, auch Pakete zu entfernen, die davon abhängen. Nach meiner Erfahrung kommen Kernel-Pakete immer in Gruppen von zwei (oder mehr, je nachdem, wie Sie zählen), die voneinander abhängig sind. Mit dem Filter "local / obsolete" können Sie in der Regel schnell alte finden.

    
Wegko 03.08.2012 04:39
quelle
1

Das Ausführen von sudo apt-get -f autoremove hat mein Problem gelöst.

    
ForzaGreen 26.04.2018 10:26
quelle
1

Überprüfen Sie die Verwendung von /var/tmp mit du -sh /var/tmp/ . Alle Dateien in diesem Ordner können gelöscht werden, um Platz zu schaffen.

Sie können dann Folgendes ausführen, um die alten Kernel zu entfernen:

sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub
    
Tertius 06.11.2017 10:29
quelle
1

Führen Sie Folgendes aus:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

Quelle: Ich bekomme diesen Fehler nach der Aktualisierung. bitte helfen Sie

    
Ardi Nusawan 15.02.2017 19:41
quelle
0

Ich fand, dass das einzige, was für mich funktionierte, Aptitude war.

sudo aptitude

Wenn es geöffnet wird, sagt es normalerweise etwas über unerfüllte Abhängigkeiten auf der Unterseite. Sie können den Buchstaben g drücken, um mit der vorgeschlagenen Entfernung fortzufahren. Es führt Sie zu einer Seite, auf der aufgelistet ist, was passieren wird.

Es sollte ein Minus - neben den kaputten Kernen sein. Drücken Sie erneut g und es werden die defekten Kernel entfernt. Drücke q um zu beenden. Dann sollten Sie sudo apt-get autoremove verwenden können, um die alten Kernel loszuwerden und Speicherplatz freizumachen.

    
Matthew Swanson 04.04.2017 01:29
quelle

Tags und Links