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


42

Я прочитал все темы, которые смог найти, даже те, в которых говорится, что на этот вопрос ответили в другом месте, но ни одна из них не затрагивает конкретную проблему, с которой я столкнулся. Диспетчер обновлений запустил и выдал ошибки, относящиеся к неудовлетворенной зависимости, и предложил использовать 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 

У вас есть место на корневом разделе?
— don.joey

1
Пожалуйста, вставьте (i) вывод df -hи (ii) вывод mount. После завершения работы dpkg очистит файлы, поэтому может показаться, что у вас достаточно места, а на самом деле его нет. Рассмотрите возможность запуска apt-get cleanдо запуска dpkg.
— января

1
контролировать do watch -n 1 df -hв терминале во время выполнения apt-get install(это немного замедлит ваш ввод- вывод, но вы будете знать, какая файловая система слишком мала)
— Эммануэль

Проблема возникает также с Ubuntu 14.04 и версией ядра 3.13.0.108 на одном компьютере из трех. Я начал с askubuntu.com/questions/223143/… но ответы, показанные здесь, в той же строке.
— XavierStuvw

Ответы:


48

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

  df -i 

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


6
У меня была та же проблема, вызванная обновлениями ядра, которые не удаляют старые ядра автоматически. Заголовки Linux каждого обновления ядра занимают значительное количество inode! --- Мой «безопасное» решение было переместить два заголовки ядра каталогов в другую файловую систему: 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, удалить некоторые другие заголовки правильного путь: apt-get purge linux-headers-...переместите заголовки из TMP спины: cd /usr/src ; cp -a /home/tmp-hdr/* .. Удалите больше старых ядер, используя apt-get purge.
— Пабук

1
Пожалуйста, рассмотрите возможность участия в сообщениях об ошибках с низкой активностью: Ошибка # 1089195 linux-headers будет съедать ваши inode на LTS. , Ошибка # 690911 При установке без форматирования не удаляются старые ядра
— pabouk

@pabouk Интересно, а можно было бы использовать, dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installчтобы копирование не требовалось?
— Ярно

@jarno Это было давно, но я думаю, что все команды, использующие базу данных dpkg или apt, терпели неудачу. Я думаю, что это было из-за сломанных зависимостей и других несоответствий, вызванных недостаточным количеством inode во время автоматического обновления.
— Пабук

Требуемая очистка диска может быть выполнена sudo linux-purge --fixпосле публикации скрипта .
— Ярно

37

Я думаю, что ваш загрузочный раздел полон старых образов ядра, не оставляя места для нового, 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сбой, потому что он пропускает некоторые зависимости пакета (которые вы не можете установить из-за отсутствия свободных инодов), вы можете dpkgвместо этого прибегнуть непосредственно:

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

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


4
Это выявляет другую проблему. Каждый раз, когда я пытаюсь запустить dpkg, он говорит мне, что у него есть неудовлетворенная зависимость. У следующих пакетов есть неудовлетворенные зависимости: linux-headers-3.5.0-36-generic: Зависит от: linux-headers-3.5.0-36, но это не так. собирается быть установленным, и это - вещь, которая не будет устанавливаться, потому что не хватает места
— Дон A

Возможно, резервная копия ваших пользовательских файлов в порядке, прежде чем связываться с загрузочным разделом? У меня никогда не было проблем с этим, но если бы я это сделал, у меня было бы все необходимое для переустановки. Конечно, я делаю резервное копирование каждый день в любом случае.
— Марк

Я надеялся, что мне не нужно возиться с загрузочным разделом и что есть способ вырваться из бесконечного цикла зависимости. Теперь я понимаю, что, вероятно, будет проще сделать резервную копию данных и начать все сначала. Теперь, когда я знаю важность очистки старых вещей, я сделаю это привычкой. Спасибо всем за помощь.
— Дон А

Не за что . , , резервное копирование - это всегда хорошая идея, и вы на самом деле не слишком много работаете с загрузочным разделом, просто удалив некоторые пакеты с помощью apt-get. Это должен быть кусок пирога. Я просто предложил выполнить резервное копирование ваших данных, потому что я всегда предлагаю резервное копирование данных, если у вас есть проблемы (или даже если у вас нет!) Я фактически запускал эти команды в моей собственной системе, чтобы проверить их. Мне потребовалось три минуты, чтобы удалить linux-headers-3.8.0-18.
— Марк

1
Если произойдет сбой снова sudo dpkg --remove linux-headers-3.8.0-18, удалите, sudo dpkg --remove linux-headers-3.8.0-18-genericи он возьмет с собой другой заголовок.
— Theson

17

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


В моем случае apt-get отказался делать автоудаление, отдавая приоритет тому факту, что был разбитый пакет для сортировки. Какой сломанный пакет был вызван насыщением inode. Смотрите также эту ветку AskUbuntu
— XavierStuvw

Ну, это только спасло меня! После обновления мой сеанс x никогда не входил, просто просил снова войти в систему, и я часто получал сообщение «нет свободного места». Я думал, что должен был отформатировать мой HD, но ваш трюк просто спас меня :)
— user5193682

1
Lol Я не могу запустить это, потому что у меня слишком много файлов ...
— Брайан говорит восстановить Monica

2

Насколько я знаю, предел 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.