Утилита говорит, что свободного места на диске больше нет, когда есть много

Как-то моя система находится в маринаде.

$ 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) 

Но:

 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 

Тупик!

 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 

Итак, таблица inode заполнена. Никогда раньше этого не было, что тогда происходит?

Как показано на выходе df -i , вы набираете очень мало числа бесплатных inodes на / и, следовательно, dpkg не может завершить операцию.

Большую часть времени это вызвано многочисленными небольшими файлами, созданными где-то (непреднамеренно) в файловой системе.

Вы можете проверить файлы размером менее 1 КБ и начать их удаление, если они не нужны:

 sudo find / -type f -size -1k -ls 

Аналогичным образом вы можете проверить с увеличением размеров файлов, пока не попадете в корень проблемы.

Все кредиты @heemayl для указателей, которые привели к этому ответу. Я принял этот ответ, но вот подробности того, как я его исправил, если он полезен другим.

Проблема была вызвана полной таблицей inode. Насколько я понимаю, в файловой системе, inodes и пространстве есть две части. inodes связаны с количеством файлов, где пространство просто так велико. Моя система была заполнена миллионами крошечных файлов, вызванных Ubuntu, не удаляющими старые ядра. Поскольку система работает в течение длительного времени, у меня было более 40 ядер, в т.ч. заголовочные файлы, которые слишком много подходят для файловой системы системного раздела 20 ГБ.

Это означало, что dpkg не смог завершить установку – для завершения работы потребовалось больше места, но, к сожалению, это не означало, что я не мог создать пространство, используя apt для удаления вещей!

Решение, которое я нашел, состояло в том, чтобы переместить все /usr/src/ файлы в другой раздел, оставив только символическую ссылку на файлы на полных fs:

 sudo mv /usr/src /home/usr-src sudo ln -s /home/usr-src /usr/src 

Сделав это, я смог завершить apt:

 sudo apt install -f 

И после этого мне удалось удалить все старые ядра, которые мне не нужны, освободив место, а затем я могу переместить папку src обратно.