D'une certaine manière, mon système est dans le pétrin.
$ Sudo apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
linux-headers-3.2.0-80
The following NEW packages will be installed
linux-headers-3.2.0-80
0 to upgrade, 1 to newly install, 0 to remove and 251 not to upgrade.
3 not fully installed or removed.
Need to get 0 B/11.7 MB of archives.
After this operation, 56.4 MB of additional disk space will be used.
Do you want to continue [Y/n]?
(Reading database ... 1255202 files and directories currently installed.)
Unpacking linux-headers-3.2.0-80 (from .../linux-headers-3.2.0-80_3.2.0-80.116_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.2.0-80_3.2.0-80.116_all.deb (--unpack):
unable to create `/usr/src/linux-headers-3.2.0-80/include/linux/sunrpc/gss_err.h.dpkg-new' (while processing `./usr/src/linux-headers-3.2.0-80/include/linux/sunrpc/gss_err.h'): 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)
Errors were encountered while processing:
/var/cache/apt/archives/linux-headers-3.2.0-80_3.2.0-80.116_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Mais:
us@desktop:/var/log$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20158332 16166516 2967816 85% /
udev 4026512 4 4026508 1% /dev
tmpfs 807064 996 806068 1% /run
none 5120 0 5120 0% /run/lock
none 4035308 128 4035180 1% /run/shm
/dev/sda4 904990760 51533960 807485908 6% /home
Stumped!
us@desktop:~$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1281120 1278499 2621 100% /
udev 1006628 507 1006121 1% /dev
tmpfs 1008827 445 1008382 1% /run
none 1008827 3 1008824 1% /run/lock
none 1008827 6 1008821 1% /run/shm
/dev/sda4 57466880 110192 57356688 1% /home
Oh, alors la table d'inodes est pleine. Jamais cela n'avait été fait auparavant, quelles en étaient les causes alors?
Comme indiqué dans le résultat de df -i
, le nombre d'inodes libres disponibles sur /
est très faible, de sorte que l'opération dpkg
n'aboutit pas.
La plupart du temps, cela est dû à de nombreux petits fichiers créés quelque part (involontairement) dans le système de fichiers.
Vous pouvez vérifier les fichiers de taille inférieure à 1 Ko et commencer à les supprimer s'ils ne sont pas nécessaires:
Sudo find / -type f -size -1k -ls
De même, vous pouvez vérifier la taille des fichiers en augmentant jusqu’à ce que vous arriviez à la racine du problème.
Tous les atouts de @heemayl pour les indications qui ont abouti à cette réponse. J'ai accepté cette réponse, mais voici les détails de la façon dont je l'ai corrigée, au cas où cela serait utile aux autres.
Le problème était dû à une table d'inodes complète. Si je comprends bien, un système de fichiers, les inodes et l’espace, comporte deux parties. Les inodes sont liés au nombre de fichiers, où l'espace correspond à leur taille. Mon système était plein à craquer de millions de fichiers minuscules causés par Ubuntu qui ne supprimait pas les anciens noyaux. Comme le système fonctionne depuis longtemps, j'avais plus de 40 noyaux, incl. les fichiers d'en-tête, installés, ce qui est trop pour le système de fichiers d'une partition système de 20 Go.
Cela signifiait que dpkg ne pouvait pas terminer une installation - il avait besoin de plus d'espace pour terminer son travail - mais malheureusement, cela signifiait aussi que je ne pouvais pas non plus créer d'espace en utilisant apt pour désinstaller des choses!
La solution que j'ai trouvée consistait à déplacer tous les fichiers /usr/src/
vers mon autre partition, en ne laissant qu'un lien symbolique vers les fichiers sur le fichier fs complet:
Sudo mv /usr/src /home/usr-src
Sudo ln -s /home/usr-src /usr/src
Après avoir fait cela, j'ai pu laisser apt à compléter:
Sudo apt install -f
Et après cela, j'ai pu désinstaller tous les anciens noyaux dont je n'avais plus besoin, ce qui libérait de l'espace, puis je pouvais déplacer le dossier src.