web-dev-qa-db-fra.com

"Il ne reste plus d'espace sur le périphérique" lors de l'installation de packages, mais il me reste de l'espace

Que ce soit par le gestionnaire de mise à jour ou par le terminal, j'erreur sur.

Quand j'essaie Sudo apt-get update && Sudo apt-get upgrade:

Fetched 1,024 kB in 20s (51.0 kB/s) 
Reading package lists... Done 
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-headers-generic : 
Depends: linux-headers-3.13.0-29-generic but it is not installed 
E: Unmet dependencies. Try using -f.

Et quand j'essaie Sudo apt-get -f install:

Unpacking linux-headers-3.13.0-29-generic (3.13.0-29.53) ... 
dpkg: error processing archive /var/cache/apt/archives/linux-headers-3.13.0-29-generic_3.13.0-29.53_AMD64.deb 
(--unpack): unable to create /usr/src/linux-headers-3.13.0-29-generic/include/config/inotify/user.h.dpkg-new' (while processing./usr/src/linux-headers-3.13.0-29-generic/include/config/inotify/user.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.13.0-29-generic_3.13.0-29.53_AMD64.deb 
E: Sub-process /usr/bin/dpkg returned an error code (1)

Lorsque j'ouvre le centre logiciel Ubuntu, je reçois le texte suivant:

Le nouveau logiciel ne peut pas être installé car il y a un problème avec le logiciel actuellement installé. Voulez-vous réparer ce problème maintenant?

Je reçois l'option de "réparer" ou "annuler". Si je clique sur 'réparer', j'obtiens l'erreur suivante:

Package operation failed
the installation or removal of a software package failed.
(Reading database ... 417598 files and directories currently installed.) 
Preparing to unpack .../linux-headers-3.13.0-29-generic_3.13.0-29.53_AMD64.deb ...   Unpacking linux-headers-3.13.0-29-generic (3.13.0-29.53) ... 
dpkg: error processing archive /var/cache/apt/archives/linux-headers-3.13.0-29-generic_3.13.0-29.53_AMD64.deb 
(--unpack): unable to create /usr/src/linux-headers-3.13.0-29-generic/include/config/bug.h.dpkg-new' (while processing./usr/src/linux-headers-3.13.0-29-generic/include/config/bug.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.13.0-29-generic_3.13.0-29.53_AMD64.deb 
Error in function: dpkg: dependency problems prevent configuration of linux-headers-generic: linux-headers-generic depends on linux-headers-3.13.0-29-generic; however: Package linux-headers-3.13.0-29-generic is not installed.
dpkg: error processing package linux-headers-generic (--configure): dependency problems - leaving unconfigured 
dpkg: dependency problems prevent configuration of linux-generic: linux-generic depends on linux-headers-generic (= 3.13.0.29.35); however: Package linux-headers-generic is not configured yet.
dpkg: error processing package linux-generic (--configure): dependency problems - leaving unconfigured

L'erreur de disque plein est étrange, car aucun de mes disques n'est plein. Je le sais car lorsque j'exécute df, j'obtiens les informations suivantes:

Filesystem 1K-blocks      Used Available Use% Mounted on 
/dev/sda6   36178648  13162504  21155332  39% /
none               4         0         4   0% /sys/fs/cgroup
udev         3873544        12   3873532   1% /dev
tmpfs         776860      1384    775476   1% /run
none            5120         0      5120   0% /run/lock
none         3884300     25276   3859024   1% /run/shm
none          102400        68    102332   1% /run/user
/dev/sda2  124327968  42583252  81744716  35% /media/sudoer/48AEC994AEC97B48 
/dev/sda3  807468724 121812996 685655728  16% /media/sudoer/New Volume

Qu'est-ce que je fais à ce stade? Merci d'avance.

5
steve.hess

Sur le système de fichiers Unix, fichier et répertoire ont deux parties: inode et données.

Les inodes contiennent des informations sur les fichiers, telles que les autorisations, le propriétaire, l'heure du changement, l'heure d'accès, etc.

Le nombre total d'inodes est limité , vous pouvez donc obtenir No space left on device si vous atteignez cette limite même si le disque n'est pas très plein.

Utilisation:

df -i

pour afficher les inodes, si vous obtenez 100% pour IUse et 0 IFree, cela signifie que vous avez beaucoup de petits fichiers .

Par exemple, si vous avez 2 milliards de fichiers dont la taille est de 1 octet, vous pouvez atteindre la limite d'inode, mais votre disque peut ne pas être complètement plein.

Si c'est votre cas, essayez de supprimer plus de fichiers que vous pouvez et redo apt-get update.

16
Lety

Votre tmpfs peut être plein. /tmp réside dans votre RAM ou votre swap. Vous pouvez vérifier combien d'espace est utilisé en exécutant:

$ df -h | grep tmpfs
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.9G   33M  3.9G   1% /dev/shm
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs           3.9G  3.9G     0 100% /tmp

Pour augmenter temporairement sa taille, essayez la commande suivante:

Sudo mount -o remount,size=16G,noatime /tmp

Vous pouvez également augmenter la taille de manière permanente via /etc/fstab.

1
Mateen Ulhaq

J'ai aussi rencontré ce problème. Selon l'invite,

impossible de créer /usr/src/linux-headers-3.13.0-29-generic/include/...

Comme l'explique Lety, "Le nombre total d'inodes est limité". J'ai donc supprimé certains anciens paquets linux-headers à l'aide du gestionnaire de paquets afin que /usr contienne suffisamment d'inodes, par exemple Sudo apt-get remove linux-headers-3.13.0-3*, puis je peux exécuter Sudo apt-get install -f pour continuer l'installation.

1
Coiby

Comme @Lety l'a dit, le problème est de savoir comment trouver des dossiers contenant de nombreux fichiers minuscules qui ont gaspillé tous vos inodes (comme le montre df -i show).

Trouver des paquets lourds (comme les vieux noyaux) avec

wajig sizes | tail -n 30

lequel requiere wajiginstallé, sinon:

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'|tail -n 10

Utilisez uname -r pour trouver le noyau actuel, vous ne voulez pas le supprimer.

Alors essaye:

  1. Redémarrez ou essayez s'il y a un processus à tuer qui a ouvert un fichier volumineux qui a depuis été supprimé Sudo lsof +L1
  2. Supprimer les paquets inutilisés Sudo apt-get autoremove
  3. Nettoyer le cache Sudo apt-get clean ou manuellement sur /var/cache/apt/archives
  4. Utilisez apt-get remove ou Sudo dpkg --purge pour supprimer certains anciens noyaux ou paquets lourds. Peut-être avez-vous toujours unable to create /usr/src/linux-headers...
  5. Si vous arrivez ici, vous utiliserez ces techniques lentes pour trouver le dossier coupable, mais allez d'abord chez les suspects habituels en utilisant quelque chose comme for i in /usr/src/*; do echo $i; find $i |wc -l; done:
    1. Dossiers d'en-tête Linux: /usr/src/linux-headers-*
    2. Journaux: /var/log/

Compteurs de dossiers spécifiques:

  • du --inodes -d 1 /usr/src/ | sort -n
  • Sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
  • Sudo find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n
1
Pablo Bianchi

Vous pouvez nettoyer de l’espace dans/boot (supprimer les anciens en-têtes de Linux, etc.), avec:

Sudo apt-get autoremove
1
dorien