apt-get: Il n'y a plus d'espace disponible sur le périphérique (12.04)

42

J'ai lu tous les fils de discussion que j'ai pu trouver - même ceux qui disent que la question a été répondue ailleurs, mais aucun d'entre eux n'aborde le problème spécifique que j'ai. Update Manager a exécuté et généré des erreurs liées à une dépendance non satisfaite et a suggéré d'utiliser apt-get install -f qui échoue avec le message suivant:

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

Je soupçonne que les 5 derniers mots. Aucun espace disponible sur le périphérique est significatif, mais df et du tous les deux montrent un espace suffisant. Je me demande donc quel appareil a besoin de plus d'espace?

Ouput de 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
la source
Avez-vous de l'espace sur la partition racine?
don.joey
1
Veuillez coller (i) le résultat de df -het (ii) le résultat de mount. dpkg nettoiera les fichiers une fois les travaux terminés. Il peut donc sembler que vous disposez de suffisamment d’espace alors que ce n’est pas le cas. Pensez à courir apt-get cleanavant de démarrer dpkg.
Janvier
1
pour surveiller faire watch -n 1 df -hdans un terminal tout en faisant le apt-get install(ça va ralentir un peu vous mais vous saurez quel système de fichiers est trop petit)
Emmanuel
Problème également avec Ubuntu 14.04 et la version 3.13.0.108 du noyau sur un ordinateur sur trois. J'ai commencé avec askubuntu.com/questions/223143/… mais les réponses présentées ici sont dans la même ligne.
XavierStuvw

Réponses:

48

Je viens de rencontrer ce même problème. J'ai trouvé ailleurs une mention d'inodes et couru dans mon terminal pour vérifier l'utilisation d'inodes:

  df -i 

Cela a montré l'utilisation d'inode à 99%. Ainsi, alors que mon disque disposait de beaucoup d'espace disque, je ne pouvais pas créer plus de fichiers en raison du nombre limité d'inodes. Un nettoyage de disque a été la solution à mon problème.

Kevin
la source
6
J'ai eu le même problème causé par les mises à jour du noyau qui ne suppriment pas automatiquement les anciens noyaux. Les en-têtes Linux de chaque mise à jour du noyau occupent un nombre considérable d'inodes! --- Ma solution « sûre » était de déplacer deux répertoires en - têtes du noyau à un autre système de fichiers: 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, supprimez quelques autres en- têtes de la bonne façon: apt-get purge linux-headers-..., déplacez les en- têtes de l'arrière tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Enlevez plus de vieux noyaux avec apt-get purge.
Pabouk
1
Veuillez envisager de participer aux rapports de bogue avec une activité faible: Bogue n ° 1089195, linux-en-têtes mangera vos inodes sur LTS. , Bogue n ° 690911. L' installation sans formatage ne permet pas de supprimer les anciens noyaux
pabouk
@pabouk Je me demande si vous auriez pu utiliser dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installpour qu'il ne soit pas nécessaire de copier?
Juin
@ jarno Cela faisait longtemps mais je pense que toutes les commandes utilisant la base de données dpkg ou apt échouaient. Je pense que c'était à cause de dépendances brisées et d'autres incohérences causées par un nombre insuffisant d'inodes lors d'une mise à niveau automatique.
Pabouk
Le nettoyage de disque requis peut être effectué sudo linux-purge --fixune fois le script publié.
jarno
37

Je pense que votre partition de démarrage est pleine d’anciennes images du noyau, ne laissant aucune place au nouveau qui apt-getessaie de l’installer. Vous pouvez taper

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

dans une fenêtre de terminal. Quand je fais cela, je reçois

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

Comme j'en ai plusieurs, je pourrais supprimer certaines des plus anciennes avec

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

Si apt-getéchoue parce qu'il manque certaines dépendances du paquet (que vous ne pouvez pas installer à cause du manque d'inodes libres), vous pouvez utiliser dpkgdirectement à la place:

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

Faites cela quelques fois à votre doyen linux-headers-*et vous devriez avoir de la place.

Marc
la source
4
Cela met en lumière l'autre problème. Chaque fois que j'essaye d'exécuter dpkg, il me dit que sa dépendance est non remplie. Les paquets suivants ont des dépendances non remplies: linux-headers-3.5.0-36-generic: Depends: linux-headers-3.5.0-36 mais ce n'est pas le cas. va être installé et c'est la chose qui ne sera pas installer parce qu'il n'y a pas assez d'espace
Don A
Peut-être qu'une sauvegarde de vos fichiers utilisateur est en ordre, avant que vous ne perturbiez votre partition de démarrage? Je n'ai jamais eu de difficulté à le faire, mais si je l'avais fait, j'aurais tout ce dont j'avais besoin pour une réinstallation. Bien sûr, je fais une sauvegarde tous les jours de toute façon.
Marc
J'espérais ne pas avoir à manipuler la partition de démarrage et à trouver un moyen de sortir du cycle sans fin de la dépendance. Je vois maintenant qu'il sera probablement plus facile de sauvegarder des données et de tout recommencer. Maintenant que je connais l’importance de nettoyer les articles les plus anciens, je vais en faire une habitude. Merci à tous pour leur aide.
Don A
Pas du tout . . . La sauvegarde est toujours une bonne idée, et vous ne jouez pas vraiment avec la partition de démarrage, il vous suffit de désinstaller certains paquets avec apt-get. Ce devrait être un morceau de gâteau. J'ai simplement suggéré de sauvegarder vos données, car je suggère toujours de les sauvegarder si vous rencontrez un problème (ou même si vous ne l'êtes pas!). J'ai en fait exécuté ces commandes sur mon propre système pour les tester. Il m'a fallu trois minutes pour enlever linux-headers-3.8.0-18.
Marc
1
Si cela échoue à nouveau pour sudo dpkg --remove linux-headers-3.8.0-18, supprimez-le sudo dpkg --remove linux-headers-3.8.0-18-genericet il emportera l'autre en-tête.
Theson
17

J'ai utilisé sudo apt-get autoremoveet il a supprimé un tas de vieux paquets en-têtes de noyau. C'est bon d'y aller après ça.

Frank Sfalanga Jr.
la source
Dans mon cas, apt-get a refusé d'effectuer une suppression automatique, donnant la priorité au fait qu'il y avait un paquet cassé à trier. Quel paquet cassé avait été causé par la saturation d'inode. Voir aussi ce fil AskUbuntu
XavierStuvw
Eh bien, ça vient de me sauver! Après une mise à jour, ma session x n’est jamais entrée, il suffit de demander à me reconnecter et j’obtiens souvent le message «no space left». Je pensais que je devais formater mon
disque dur
1
Lol, je ne peux pas lancer ça parce que j'ai trop de fichiers ...
Brian dit Réintégrer Monica
2

Autant que je sache, la limite d'inodes dans les systèmes de fichiers Linux ext * est d'environ 4 milliards, mais pas moins, ce qui représente une énorme quantité de fichiers. Votre problème est donc que quelque chose génère beaucoup de fichiers. Je peux vous proposer de vérifier d'abord ceci: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Vous trouverez donc ce qui remplit les inodes de votre système de fichiers. Je peux aussi proposer de nettoyer le cache d'apt:

sudo apt-get clean

et

sudo apt-get autoclean
Stefan
la source