Попытка освободить место для некоторых обновлений, но нет проблем с зависимостями при попытке удалить / удалить

Я развертываюсь на моем сервере, используя ansible, часть из которых выполняет кучу команд "update" перед тем, как начать установку / обновление пакетов. Недавно я получил сообщение об ошибке дискового пространства, но, похоже, что он собирается по кругу, пытаясь это исправить, ниже приводится столько информации, сколько я могу представить, чтобы рассказать о том, что произошло.

Стартовая ошибка:

sudo apt-get --fix-broken install -y

Дал следующее:

sudo: невозможно разрешить хост myserver-001
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Исправление зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
Linux-Headers-3.13.0-160
Будут установлены следующие НОВЫЕ пакеты:
Linux-Headers-3.13.0-160
0 обновлено, 1 недавно установлено, 0 для удаления и 0 не обновлено.
4 не полностью установлены или удалены.
Необходимо получить 0 B/8,911 кБ архивов.
После этой операции будет использовано 63, 6 МБ дополнительного дискового пространства.
(Чтение базы данных... 505365 файлов и каталогов, установленных в настоящее время.)
Подготовка к распаковке.../linux-headers-3.13.0-160_3.13.0-160.210_all.deb ...
Распаковка linux-headers-3.13.0-160 (3.13.0-160.210) ...
dpkg: архив обработки ошибок /var/cache/apt/archives/linux-headers-3.13.0-160_3.13.0-160.210_all.deb (--unpack):
Ошибка при создании каталога `./usr/src/linux-headers-3.13.0-160/drivers/staging/lustre/lustre/osc': на устройстве не осталось места
Не написано отчёта apport, потому что сообщение об ошибке указывает на ошибку переполнения диска
dpkg-deb: ошибка: вставка подпроцесса была прервана по сигналу (сломанный канал)
При обработке возникли ошибки:
/var/cache/apt/archives/linux-headers-3.13.0-160_3.13.0-160.210_all.deb
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Для меня важной частью было:

error creating directory `./usr/src/linux-headers-3.13.0-160/drivers/staging/lustre/lustre/osc': No space left on device  

Не написано отчёта apport, потому что сообщение об ошибке указывает на ошибку переполнения диска

Итак, после некоторого поиска в Google я оказался в следующих местах: /boot и / usr / src / и проверил innodes

df / boot | df / usr / src:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda1       8115168 5474876   2205016  72% /

df -i:

Filesystem     Inodes  IUsed  IFree IUse% Mounted on
udev           480531    391 480140    1% /dev
tmpfs          481833    312 481521    1% /run
/dev/xvda1     524288 521345   2943  100% /
none           481833      2 481831    1% /sys/fs/cgroup
none           481833      1 481832    1% /run/lock
none           481833      1 481832    1% /run/shm
none           481833      2 481831    1% /run/user
/dev/xvdb      262144     11 262133    1% /mnt

uname -r:

3.13.0-158-generic

Я не очень хорош в этом, поэтому стараюсь предоставить как можно больше информации. Я прошу прощения, если что-либо из этого бесполезно.

В / usr / src у меня много linux-заголовков:

drwxr-xr-x 24 root root 4096 нояб. 2016 г. linux-headers-3.13.0-101
drwxr-xr-x 7 root root 4096 нояб. 2016 г. linux-headers-3.13.0-101-generic
drwxr-xr-x 24 root root 4096 20 января 2017 linux-headers-3.13.0-107
drwxr-xr-x 7 root root 4096 20 января 2017 linux-headers-3.13.0-107-generic
drwxr-xr-x 24 root root 4096 9 марта 2017 linux-headers-3.13.0-112
drwxr-xr-x 7 root root 4096 9 марта 2017 linux-headers-3.13.0-112-generic
drwxr-xr-x 24 root root 4096 7 апреля 2017 linux-headers-3.13.0-116
drwxr-xr-x 7 root root 4096 7 апреля 2017 г. linux-headers-3.13.0-116-generic
drwxr-xr-x 24 root root 4096 4 мая 2017 linux-headers-3.13.0-117
drwxr-xr-x 7 root root 4096 4 мая 2017 года linux-headers-3.13.0-117-generic
drwxr-xr-x 24 root root 4096 18 мая 2017 linux-headers-3.13.0-119
drwxr-xr-x 7 root root 4096 18 мая 2017 г. linux-headers-3.13.0-119-generic
drwxr-xr-x 24 root root 4096 июн 22 2017 linux-headers-3.13.0-121
drwxr-xr-x 7 root root 4096 22 июня 2017 г. linux-headers-3.13.0-121-generic
drwxr-xr-x 24 root root 4096 июл 7 2017 linux-headers-3.13.0-123
drwxr-xr-x 7 root root 4096 июл 2017 г. linux-headers-3.13.0-123-generic
drwxr-xr-x 24 root root 4096 18 июля 2017 linux-headers-3.13.0-125
drwxr-xr-x 7 root root 4096 18 июля 2017 г. linux-headers-3.13.0-125-generic
drwxr-xr-x 24 root root 4096 31 августа 2017 linux-headers-3.13.0-129
drwxr-xr-x 7 root root 4096 31 августа 2017 года linux-headers-3.13.0-129-generic
drwxr-xr-x 24 root root 4096 25 января 2018 linux-headers-3.13.0-141
drwxr-xr-x 7 root root 4096 25 января 2018 linux-headers-3.13.0-141-generic
drwxr-xr-x 24 root root 4096 22 февраля 2018 linux-headers-3.13.0-142
drwxr-xr-x 7 root root 4096 22 февраля 2018 linux-headers-3.13.0-142-generic
drwxr-xr-x 24 root root 4096 27 марта 2018 linux-headers-3.13.0-143
drwxr-xr-x 7 root root 4096 27 марта 2018 linux-headers-3.13.0-143-generic
drwxr-xr-x 24 root root 4096 27 апреля 13:47 linux-headers-3.13.0-145
drwxr-xr-x 7 root root 4096 27 апреля 13:47 linux-headers-3.13.0-145-generic
drwxr-xr-x 24 root root 4096 14 мая 11:11 linux-headers-3.13.0-147
drwxr-xr-x 7 root root 4096 14 мая 11:11 linux-headers-3.13.0-147-generic
drwxr-xr-x 24 root root 4096 23 мая 11:04 linux-headers-3.13.0-149
drwxr-xr-x 7 root root 4096 23 мая 11:04 linux-headers-3.13.0-149-generic
drwxr-xr-x 24 root root 4096 сентябрь 12 15:19 linux-headers-3.13.0-158
drwxr-xr-x 7 root root 4096 сент. 12 15:19 linux-headers-3.13.0-158-generic
drwxr-xr-x 7 root root 4096 12 октября 11:15 linux-headers-3.13.0-160-generic
drwxr-xr-x 24 root root 4096 25 марта 2015 linux-headers-3.13.0-48
drwxr-xr-x 7 root root 4096 25 марта 2015 linux-headers-3.13.0-48-generic

Я предполагаю, что мне не нужно много из них, но когда я пытаюсь удалить ядра 2015 года, я получаю ту же ошибку, что и раньше, которая жалуется на самое последнее и тот факт, что она не может установить свою зависимость:

sudo apt-get remove linux-headers-3.13.0-48

sudo: невозможно разрешить хост myserver-001
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Вы можете запустить 'apt-get -f install', чтобы исправить это:
Следующие пакеты имеют неудовлетворенные зависимости:
linux-headers-3.13.0-160-generic: Зависит от: linux-headers-3.13.0-160, но не будет установлен
linux-headers-3.13.0-48-generic: Зависит от: linux-headers-3.13.0-48, но не будет установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt-get -f install' без пакетов (или укажите решение) .

Если я попробую "apt-get -f install", я получу то же сообщение, что и раньше, о пустом месте.

/ boot ls

 abi-3.13.0-101-generic     config-3.13.0-149-generic      System.map-3.13.0-117-generic
 abi-3.13.0-107-generic     config-3.13.0-158-generic      System.map-3.13.0-119-generic
 abi-3.13.0-112-generic     config-3.13.0-160-generic      System.map-3.13.0-121-generic
 abi-3.13.0-116-generic     config-3.13.0-48-generic       System.map-3.13.0-123-generic
 abi-3.13.0-117-generic     grub                           System.map-3.13.0-125-generic
 abi-3.13.0-119-generic     initrd.img-3.13.0-101-generic  System.map-3.13.0-129-generic
 abi-3.13.0-121-generic     initrd.img-3.13.0-107-generic  System.map-3.13.0-141-generic
 abi-3.13.0-123-generic     initrd.img-3.13.0-112-generic  System.map-3.13.0-142-generic
 abi-3.13.0-125-generic     initrd.img-3.13.0-116-generic  System.map-3.13.0-143-generic
 abi-3.13.0-129-generic     initrd.img-3.13.0-117-generic  System.map-3.13.0-145-generic
 abi-3.13.0-141-generic     initrd.img-3.13.0-119-generic  System.map-3.13.0-147-generic
 abi-3.13.0-142-generic     initrd.img-3.13.0-121-generic  System.map-3.13.0-149-generic
 abi-3.13.0-143-generic     initrd.img-3.13.0-123-generic  System.map-3.13.0-158-generic
 abi-3.13.0-145-generic     initrd.img-3.13.0-125-generic  System.map-3.13.0-160-generic
 abi-3.13.0-147-generic     initrd.img-3.13.0-129-generic  System.map-3.13.0-48-generic
 abi-3.13.0-149-generic     initrd.img-3.13.0-141-generic  vmlinuz-3.13.0-101-generic
 abi-3.13.0-158-generic     initrd.img-3.13.0-142-generic  vmlinuz-3.13.0-107-generic
 abi-3.13.0-160-generic     initrd.img-3.13.0-143-generic  vmlinuz-3.13.0-112-generic
 abi-3.13.0-48-generic      initrd.img-3.13.0-145-generic  vmlinuz-3.13.0-116-generic
 config-3.13.0-101-generic  initrd.img-3.13.0-147-generic  vmlinuz-3.13.0-117-generic
 config-3.13.0-107-generic  initrd.img-3.13.0-149-generic  vmlinuz-3.13.0-119-generic
 config-3.13.0-112-generic  initrd.img-3.13.0-158-generic  vmlinuz-3.13.0-121-generic
 config-3.13.0-116-generic  initrd.img-3.13.0-160-generic  vmlinuz-3.13.0-123-generic
 config-3.13.0-117-generic  initrd.img-3.13.0-48-generic   vmlinuz-3.13.0-125-generic
 config-3.13.0-119-generic  retpoline-3.13.0-143-generic   vmlinuz-3.13.0-129-generic
 config-3.13.0-121-generic  retpoline-3.13.0-145-generic   vmlinuz-3.13.0-141-generic
 config-3.13.0-123-generic  retpoline-3.13.0-147-generic   vmlinuz-3.13.0-142-generic
 config-3.13.0-125-generic  retpoline-3.13.0-149-generic   vmlinuz-3.13.0-143-generic
 config-3.13.0-129-generic  retpoline-3.13.0-158-generic   vmlinuz-3.13.0-145-generic
 config-3.13.0-141-generic  retpoline-3.13.0-160-generic   vmlinuz-3.13.0-147-generic
 config-3.13.0-142-generic  System.map-3.13.0-101-generic  vmlinuz-3.13.0-149-generic
 config-3.13.0-143-generic  System.map-3.13.0-107-generic  vmlinuz-3.13.0-158-generic
 config-3.13.0-145-generic  System.map-3.13.0-112-generic  vmlinuz-3.13.0-160-generic
 config-3.13.0-147-generic  System.map-3.13.0-116-generic  vmlinuz-3.13.0-48-generic

Я попытался удалить последнее ядро ​​отсюда - оно, кажется, было частично установлено: sudo apt-get purge linux-image-3.13.0-160

Дали мне это:

Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Обратите внимание, выбрав 'linux-image-3.13.0-160-lowlatency' для regex 'linux-image-3.13.0-160'
Обратите внимание, выбрав 'linux-image-3.13.0-160-generic' для regex 'linux-image-3.13.0-160'
Пакет 'linux-image-3.13.0-160-lowlatency' не установлен, поэтому не удаляется
Вы можете запустить 'apt-get -f install', чтобы исправить это:
Следующие пакеты имеют неудовлетворенные зависимости:
linux-headers-3.13.0-160-generic: Зависит от: linux-headers-3.13.0-160, но не будет установлен
linux-image-virtual: Зависит: linux-image-3.13.0-160-generic, но не будет установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt-get -f install' без пакетов (или укажите решение) .

Я действительно не понимаю, что делать. Если кто-нибудь может указать мне правильное направление, это было бы здорово! Я просто использую rm для удаления некоторых старых файлов в / boot или /usr/src? Потому что большинство постов предлагали не делать этого, а использовать команды apt-get remove и т.д.. Cheers

2 ответа

Решение

У вас действительно нет inodes (вы уже знали это).

Условие действительно вызвано всеми этими пакетами заголовков ядра (вы тоже это знали).

Apt не может выполнить деинсталляцию, потому что завершенные внутрипроцессные установки находятся в очереди раньше... и эти внутрипроцессные установки прерываются из-за отсутствия inodes. Apt всегда пытается выполнить незавершенные действия перед новыми действиями. (ты тоже это понял)

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

sudo dpkg --remove linux-headers-3.13.0-48 linux-headers-3.13.0-48-generic
sudo apt-get remove linux-headers-3.13.0-101 linux-headers-3.13.0-101-generic

Нужно немного больше очистить - намного больше заголовков ядра, а также множество устаревших образов ядра, висящих в / boot.

Pro Совет: НИКОГДА не используйтеrm удалить файлы, размещенные менеджером пакетов. Вы просто замените сегодняшнюю ошибку нехватки места ошибкой отсутствующего файла на следующей неделе... которую может быть гораздо труднее исправить. ВСЕГДА используйте менеджер пакетов, чтобы удалить файлы, которые он поместил.

Попробуйте с установкой твиков Ubuntu. Это, по крайней мере, поможет вам удалить старые ядра, и вы сможете получить немного свободного места.

Также попробуйте следующие команды:

sudo apt-get install --fix-missing --fix-broken

sudo dpkg --configure -a

Или используйте конкретное имя пакета с ошибкой, чтобы перенастроить его

sudo dpkg-reconfigure <pakcage name>

[Редактировать]

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

использование truncate --size 0 [path to the log file]

Если вы хотите сохранить содержимое этих файлов, сначала загрузите их на свой локальный компьютер. В вашей БД, если система использует какой-либо тип журналирования / кэширования, очистите эти таблицы.

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