«Нет места на устройстве» при установке пакетов, но у меня осталось место

Независимо от того, через диспетчер обновлений или через терминал, я ошибаюсь.

Когда я пытаюсь 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. 

И когда я пытаюсь 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) 

Когда я открываю программный центр Ubuntu, я получаю следующий текст:

Новое программное обеспечение не может быть установлено, так как существует проблема с установленным в данный момент программным обеспечением. Вы хотите восстановить эту проблему сейчас?

Я получаю возможность «восстановить» или «отменить». Если я нажму «repair», я получаю следующую ошибку:

 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 

Ошибка полного диска нечетна, потому что ни один из моих дисков не заполнен. Я знаю это, потому что, когда я запускаю df , я получаю следующее:

 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 

Что мне делать в этот момент? Заранее спасибо.

В файловой системе unix файл и каталог имеют две части: inode и data.

В inodes хранятся сведения о файле, такие как разрешение, владелец, время изменения, время доступа и т. Д.

Общее количество инодов ограничено , поэтому вы можете получить No space left on device если вы достигнете такого предела, даже если диск не очень заполнен.

Использование:

 df -i 

для просмотра inodes, если вы получаете 100% для IUse и 0 IFree , это означает, что у вас много мелких файлов.

Например, если у вас есть 2 миллиарда файлов размером 1 байт, вы можете достигнуть предела inode, но ваш диск может быть не полностью заполнен.

Если это ваш случай, попробуйте удалить больше файлов, которые вы можете, а затем apt-get update .

Я также столкнулся с этой проблемой. Согласно подсказке,

не удалось создать /usr/src/linux-headers-3.13.0-29-generic/include / …

Как объясняет Лети, «общее количество инодов ограничено». Поэтому я удалил несколько старых пакетов linux-headers с помощью диспетчера пакетов, так что /usr будет иметь достаточно inodes, например sudo apt-get remove linux-headers-3.13.0-3* , тогда я могу запустить sudo apt-get install -f для продолжения установки.

Вы можете очистить место в / boot (удалить старые заголовки linux и т. Д.), Используя:

 sudo apt-get autoremove 

Как сказал @Lety, проблема в том, как найти папки с большим количеством крошечных файлов, которые теряли все ваши inodes (как df -i show).

Найдите старые ядра или тяжелые пакеты:

  1. 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
  2. Легче, если wajig установлен: wajig sizes | tail wajig sizes | tail

Используйте uname -r для поиска текущего ядра.

Затем попробуйте:

  1. Перезагрузите или попробуйте или если процесс (чтобы быть убитым) открыл большой файл, который с тех пор был удален sudo lsof +L1
  2. Удалить неиспользуемые пакеты sudo apt-get autoremove
  3. Очистить кеш sudo apt-get clean или вручную в /var/cache/apt/archives
  4. Используйте apt-get remove или sudo dpkg --purge для удаления старых ядер или тяжелых пакетов. Возможно, вы все еще unable to create /usr/src/linux-headers
  5. Если вы придете сюда, вы будете использовать эти медленные методы, чтобы найти виновную папку, но сначала перейдите к обычным подозреваемым, используя что-то вроде for i in /usr/src/*; do echo $i; find $i |wc -l; done for i in /usr/src/*; do echo $i; find $i |wc -l; done for i in /usr/src/*; do echo $i; find $i |wc -l; done :
    1. Папки заголовков Linux: /usr/src/linux-headers-*
    2. Журналы: /var/log
    3. Журналы: /var/

Конкретные счетчики папок:

  • 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