apt-get: на устройстве не осталось места (12.04)

Я прочитал все темы, которые смог найти, даже те, в которых говорится, что на этот вопрос ответили в другом месте, но ни одна из них не затрагивает конкретную проблему, с которой я столкнулся. Диспетчер обновлений запустил и выдал ошибки, относящиеся к неудовлетворенной зависимости, и предложил использовать apt-get install -f, которая завершается с этим сообщением:

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

Я подозреваю, что последние 5 слов На устройстве не осталось свободного места, но df и du оба показывают достаточно места. Вот мне и интересно, какому устройству нужно больше места?

Ouput от 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 

5 ответов

Я только что столкнулся с этой же проблемой. В другом месте я встретил упоминание inode и побежал в свой терминал, чтобы проверить использование inode:

  df -i 

Это показало использование инода на 99%. Таким образом, хотя на моем диске оставалось достаточно места, я не смог создать больше файлов из-за ограничения числа инодов. Некоторая очистка диска была решением моей проблемы.

Я думаю, что ваш загрузочный раздел полон старых образов ядра, не оставляя места для нового apt-get пытается установить. Вы можете напечатать

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

в окно терминала. Когда я делаю это, я получаю

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

Так как у меня есть довольно много, я мог бы удалить некоторые из самых старых с

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

Если apt-get происходит сбой, потому что он пропускает некоторые зависимости пакета (которые вы не можете установить из-за отсутствия свободных inode), вы можете прибегнуть к dpkg прямо вместо:

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

Сделайте это пару раз своему старшему linux-headers-* и у тебя должна быть комната.

Я использовал sudo apt-get autoremove и он удалил кучу старых пакетов заголовков ядра. Хорошо пойти после этого.

Насколько я знаю, предел inode в файловых системах Linux ext * составляет около 4 миллиардов, но не меньше, что составляет огромное количество файлов. Итак, ваша проблема в том, что что-то генерирует много файлов. Я могу предложить вам сначала проверить это: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Итак, вы найдете, что заполняет иноды вашей FS. Я могу также предложить очистить кэш apt:

sudo apt-get clean

а также

sudo apt-get autoclean

Если у вас закончилось место на диске,apt-get clean/apt-get autocleanне дает вам достаточно места, и у вас есть лишняя оперативная память, попробуйте мой ответ по адресу:

https://unix.stackexchange.com/a/726355/250404

Я использовал виртуальный диск, чтобы выжать достаточно места для завершенияapt --fix-broken installи оправиться от этого.

Другие вопросы по тегам