Вопрос Загрузочный раздел заполнен, не удалив старые ядра. Сломанные пакеты


Извините за вопрос о том, что, вероятно, очень просто, но я уже неделю работаю в Googling, и я пробовал много чего без успеха.

Для начала я получаю всплывающее окно каждый раз, когда я загружаю сообщение о том, что мой / загрузочный раздел заполнен, и Synaptic Manager говорит, что файл linux-image-generic поврежден, но он не может переустановить ни один из них (linux-image-extra- 3.13.0-54-generic и linux-image-generic).

Мой терминал говорит мне попробовать использовать install -f, чтобы исправить ситуацию, поэтому я попробовал это, и это то, что оно вернуло. К сожалению, я все еще участвую, и я не смог взломать код, мне бы хотелось помочь

aksel@aksels-PC:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
 linux-image-3.13.0-54-generic
Suggested packages:
 fdutils linux-doc-3.13.0 linux-source-3.13.0 linux-tools
The following NEW packages will be installed:
 linux-image-3.13.0-54-generic
0 upgraded, 1 newly installed, 0 to remove and 344 not upgraded.
5 not fully installed or removed.
Need to get 0 B/14,7 MB of archives.
After this operation, 32,8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 431129 files and directories currently installed.)
Preparing to unpack .../linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb ...
Done.
Unpacking linux-image-3.13.0-54-generic (3.13.0-54.91) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-3.13.0-54-generic' to '/boot/vmlinuz-3.13.0-54-generic.dpkg-new': failed to write (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)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
Errors were encountered while processing:
 /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

7
2018-06-12 23:10


происхождения




ответы:


Используя linux-purge

Для этого я создал вспомогательный скрипт. Это называется linux-purge и его страница проекта Вот в Launchpad.net. В разделе объявлений есть инструкции по установке Вот,

В этом конкретном случае вы будете запускать

sudo linux-purge --fix

Для получения дополнительных вопросов и отзывов о скрипте, ответьте на этот поток Ubuntuforums.org,

Ручной метод

В качестве альтернативы есть инструкции о том, как выполнять задачу вручную Общение которые я внес в (как ярно).

Во всяком случае, вот мои инструкции вручную как архив:

Сначала удалите оставшиеся временные файлы из предыдущих обновлений ядра.

sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*

(Возможно, некоторые из-за ошибка в Ubuntu 16.04 и старше.)

Список успешно установленных ядер, за исключением загруженного ядра, командой:

dpkg-query -W -f='${Status} ${Package}\n' | awk '/^[^ ]+ ok installed linux-image-[0-9]+/{print $4}' | grep -Fv $(uname -r)

Удалите файл initrd.img ненужного ядра (из-за ошибка); здесь выбранный выпуск ядра составляет 4.2.0-23-generic:

sudo update-initramfs -d -k 4.2.0-23-generic

Очистите ядро

sudo dpkg --purge linux-image-extra-4.2.0-23-generic linux-image-4.2.0-23-generic

для освобождения места в / boot. Если команда не работает, некоторые установленные пакеты зависят от ядра. Вывод dpkg указывает имя пакета. Сначала протрите его.

Вы также можете очистить соответствующий пакет заголовка

sudo dpkg --purge linux-headers-4.2.0-23-generic

и даже общий пакет заголовков

sudo dpkg --purge linux-headers-4.2.0-23

если от этого не зависит никакой другой пакет; в противном случае команда завершится неудачно, но будет безопасно работать.

Затем запустите

sudo apt-get install -f

для исправления неисправности. Если это не удается из-за недостаточного дискового пространства, вам нужно удалить другое ядро, как описано выше.

Обратите внимание, что в вашей системе может быть слишком много ядер, но теперь вы можете очистить дополнительные, например, sudo apt-get purge за которыми следуют имена (я) пакета ядра.


7
2018-02-09 21:50



+1 для purge-old-kernels что позволяет гораздо больший контроль над тем, что сохраняется. Например. хранить N ядра sudo purge-old-kernels --keep N, - mbdevpl
@mbdevpl сейчас purge-old-kernels не рекомендуется. Для большего контроля я рекомендую использовать linux-purge, См. Обновленный ответ. - jarno


Самый быстрый и простой способ удаления старых ядер:

sudo apt-get autoremove

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


0
2018-06-13 00:01



Ну, это правда, если у него установлено несколько ядер, но в некоторых ситуациях «autoremove» не удалит старое ядро. - JohnRB
Иногда да; но большую часть времени он работает. Это одна команда, и поэтому стоит попробовать сначала. - Rod Smith
Я пробовал это раньше, к сожалению, ничего не сделал - Dooblieve
В этом случае вам следует следовать более сложным советам других. Кроме того, какой размер /boot раздел? (Вы можете это узнать, набрав df -h /boot.) Я вообще рекомендую /boot раздел 500MiB или около того. Если он меньше половины, он будет слишком быстро заполняться. Можно изменять размеры разделов, но при этом возникает определенный риск, особенно если вам нужно переместить начальную точку. - Rod Smith
Downvoted, потому что решение не работает в этом конкретном случае. Также autoremoving работает только для «автоматически» установленных ядер (и других пакетов); он не работает для установленных ядер (вручную) с использованием обновлений программного обеспечения в Thrusty, см. Ошибка # 1492709, - jarno


Ну, неудивительно, что функции apt-get терпят неудачу, если ваш / загрузочный раздел заполнен. Вам просто нужно освободить место в вашем / boot, вы можете сделать это графически или через терминал / ssh, с чем вам удобнее. Вы можете очистить (не удалять!) Ненужные пакеты, занимающие пространство (ядра с момента его загрузки), или вы можете расширить свой / загрузочный раздел, сделав его более крупным, чем вы можете снова запустить команду -f. Если для вас все будет другим языком, мне понадобится дополнительная информация, чтобы дать вам точные команды, которые вам нужно выполнить для этого.

  1. Список установленных ядер: dpkg -l | grep linux-image- 
  2. Как устанавливаются системные разделы (что делает cat /etc/fstab вывод)?
  3. Список дискового пространства: df  команда.

Вот ссылка, которая должна помочь Удаление старых ядер


-1
2018-06-12 23:56



проверяя ссылку. В то же время вот вывод вашего второго пункта: i.imgur.com/wa0HL6f.png - Dooblieve
У исправить это жаль, что у меня не было времени и я не видел вашего ответа? Надеюсь, что у вас есть целый список ответов здесь. lol Если не дайте мне знать, и я буду держать вас за руку и ходить, вы бросили ее. - JohnRB


У вас закончилось свободное место на загрузочном разделе. Вот почему apt-get терпит неудачу, он даже говорит вам об этом

Нет отчета о подписке, поскольку сообщение об ошибке указывает на диск полон ошибка

Удалите старые ядра до (повторной) установки, оставьте последние и предыдущие.

#dpkg -l | grep linux-image-

перечислит все установленные ядра

sudo apt-get autoremove linux-image-##fill-in-with-result-from-previous-command##

удалит их

$apt-get install --reinstall linux-image-generic

сделает все остальное

Официальная страница Ubuntu об удалении старых ядер


-1
2018-06-12 23:56



apt-get отказывается удалить что-либо, потому что последнее ядро, которое оно пыталось установить, не вписывалось в /boot, оставляя неудовлетворительные зависимости. Эти зависимости не могут быть установлены из-за нехватки места и действительно старые ядра не могут быть установлены из-за неудовлетворенных зависимостей в глобальном списке пакетов. :( - Ben Voigt
попробуй это: #dpkg -l | grep linux-image-  #dpkg --force-all -P linux-image-##fill-in-with-result-from-previous-command## - czapa.ols
Да, dpkg все еще может удалить вещи, даже если apt-get застрял в разрешении зависимостей. - Ben Voigt