Почему Ubuntu не удаляет старые ядра автоматически? [Дубликат]

92

Интересно, почему Ubuntu не удалит старые ядра автоматически.

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

Есть ли причина, по которой Ubuntu не будет делать это автоматически ?.     

задан Registered User 27.02.2015 в 15:35
источник

8 ответов

44

Is there a reason why Ubuntu wont do this automatically?

Я вижу только одну причину: она не работает безупречно; нет чистого способа в настоящее время решить, что такое определение «старых ядер». «старый» не означает «неиспользуемый», и это не означает «нежелательный». И любая ошибка в этом будет убивать машину пользователя.

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

Ресурсы для этого вывода:

Ubuntu WIKI: Proposal for removing old kernels

Last-good-boot is implemented fully in Intrepid/8.10 final, however it has been disabled because it was not considered stable enough. The setting is a single line in the file /etc/default/kernel-helper-rc.

Launchpad: Should aptitude provide a way to remove old kernel versions ?

apt-get has an autoremove feature that uninstalls all packages that are not needed as dependencies and have not been installed manually. Since Ubuntu 14.04 all obsolete kernels and headers should automatically be flagged as no more needed, and thus can be purged with the apt-get autoremove command. (There are reports that this does not yet fully work). I am not aware of a feature in aptitude that is similar to apt-get's autoremove.

Ubuntu-devel: Distro-provided mechanism to clean up old kernels

While agreeing that it would be quite helpful and seems appropriate to have the cleanup automatic, there is a slight potential pitfall (or two). There are various flavours of kernels and people may or may not deliberately have those installed in parallel. Also various releases had sometimes a changing set of depending packages. For a while this should be only linux-backports-modules (there had been linux-ubuntu-modules and linux-restricted-modules). Though this is not so much of a problem. From a pattern matching point of view the generic-pae kernels are a bit of a pain as they tend to ruin the "use the last part of a split by "-" for the flavor". But anyway, I think the main issue is the various flavours, so a cleanup that is automatic should retain the last three of each, even though this may tend to leave more kernels around.

    
ответ дан Rinzwind 27.02.2015 в 16:02
источник
21

Здесь есть две вещи:

  1. Новые ядра - это совершенно новые пакеты, а не обновленные пакеты с более новым номером версии, поэтому установка нового образа ядра не заменяет старых. Они сосуществуют.

  2. Ubuntu использует кучу apt magic для защиты последних двух версий ядра от «apt-get autoremove» (последний и последний, который был загружен). Подробнее см. /Etc/apt/apt.conf.d/01autoremove-kernels.

Все это означает, что после перезагрузки в последнее ядро «apt-get autoremove» следует удалить все, кроме текущего и последнего загруженных пакетов ядра.

Старые ядра все еще накапливаются в / boot, потому что autoremove по умолчанию не включен в Ubuntu - вы должны либо запускать его вручную так часто, либо вы должны включить его.

Это может измениться в 16.04. исправление для пакета автоматической установки обновлений позволит по умолчанию автоматически запускать старые ядра.

    
ответ дан andrewdevans 28.02.2015 в 00:08
16

Этот скрипт выполнит эту работу. Он удалит все ядра, которые не используются.

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo apt-get -y purge

Другое, что, не удаляя ядра, должно быть совершенно новое. У меня есть одна система Ubuntu 14 после того, как другая работает над этой проблемой полного раздела загрузки из-за старого мусора ядра.

Это может сделать жизнь менее опытных пользователей чрезвычайно сложной. Это на самом деле ловушка noob. Canonical должен это исправить.     

ответ дан psnizek 08.03.2015 в 10:18
3

Простым способом удаления старых ядер является использование ubuntu-tweak. Вы выбираете тег «Дворник» и отметьте поле «Старый ящик». Это дает вам список ядер, которые, по его мнению, вам больше не нужны. Вы можете выбрать их все и нажать «Очистить», и через некоторое время работа будет выполнена. Из-за нервного расположения я проверил, какое ядро запускалось с помощью uname -a, но это не фигурировало в списке. Это работало на ноутбуке моей жены (у которого был довольно небольшой загрузочный раздел и он показывал предупреждения) и мой (который работал отлично). Согласны ли все с тем, что это безопасно?

    
ответ дан Chris_Dorking 28.02.2015 в 13:22
2

Ubuntu только автоматически удаляет элементы, которые больше не нужны или являются угрозой безопасности ... Поэтому я предполагаю, что причиной этого являются цели безопасности. Скажем, по какой-то нечетной причине новое ядро становится небезопасным ... Затем вы временно перенаправляетесь к старому ядру, пока новый фиксируется. Кроме того, новые ядра могут появляться с изменениями, поэтому некоторые ядра могут включать, например, обновление с 14.04.1 по 14.04.2, вы можете отказаться от нового ядра, но в апреле этого года, когда выйдет новая версия LTS 15.04, вы автоматически получите вы обновляете ядра. Поэтому я считаю, что это для целей безопасности.

, но если вы хотите удалить его, попробуйте запустить эту командную строку

sudo apt-get autoremove

Это должно удалить любое ненужное программное обеспечение, такое как ваше старое ядро, если не попробовать

sudo apt-get remove (kernels-name)
    
ответ дан Tactux 27.02.2015 в 15:54
2

Я рекомендую использовать Ubuntu Tweak для удаления старых ядер. смотрите здесь:

Как удалить старые версии ядра для очистки меню загрузки?

    
ответ дан skonsoft 22.10.2015 в 11:00
2

Я думаю, что последняя версия Ubuntu 15.10 может автоматически удалять старые ядра, если вы редактируете файл /etc/apt/apt.conf.d/50unattended-upgrades: Изменить строку

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

to

Unattended-Upgrade::Remove-Unused-Dependencies "true";

Я не тестировал это.

    
ответ дан jarno 23.12.2015 в 21:12
2

У меня возникла проблема с невозможностью установки программного обеспечения. Apt-get не смог установить Linux-заголовки, сообщив, что диск был заполнен. $ df -i сообщили, что IUse% был на 100%: на диске было свободное место, но закончилось inodes. $ sudo dpkg --configure -a не удалось, & amp; так и $ sudo apt-get -f install и $ sudo apt-get autoremove

Проблема решена, когда я вручную удалил несколько старых папок ядра из / usr / src - всего лишь $ rm или shift-delete папок. Это позволило освободить достаточно пространства inode, чтобы завершить выполнение $ apt-get -f install .

После этого у меня было всего 10 ядер linux. Я запустил $ sudo apt-get autoremove , который удалил 1,4 ГБ файлов. Который задает вопрос: Действительно? В самом деле?? Но, честно говоря, это правильный способ запустить удобную для пользователя систему?

    
ответ дан Gareth 24.12.2015 в 09:47