Почему не делает склонный - добираются, автоудаляют, удаляют мои старые ядра?

Мой раздел начальной загрузки находится на SSD, таким образом, он не имеет пространство для больше, чем приблизительно 8 установленных версий ядра, и в конечном счете некоторое обновление ядра не установит, потому что мой раздел начальной загрузки полон старых версий. Существует много вопросов там о том, как удалить старые версии (даже, как автоматизировать процесс), но мой вопрос - просто это: Почему не делает apt-get autoremove обнаружьте и удалите их автоматически, и есть ли способ, которым я могу заставить его сделать так? Я имею в виду, apt-get то, что установило их так или иначе, таким образом, это знает о них, итак, почему это принимает решение разбросать все старые версии?

53
задан 19 December 2014 в 17:12

4 ответа

Для ответа, почему обратитесь к файлу /etc/apt/apt.conf.d/01autoremove-kernels

enter image description here

, Как Вы видите, склонный сказан никогда не автоудалить ядра, как сказано другим (сценарий) файл, /etc/kernel/postinst.d/apt-auto-removal. И здесь это:

enter image description here

, Если Ваш сценарий-fu достаточно хорош, Вы могли бы отредактировать его для сохранения только ядер пары, хотя я не могу помочь Вам там, поскольку мой сценарий fu не то, что хорош

Обновление:

В /etc/kernel/postinst.d/apt-auto-removal существует эта часть:

if [ "$latest_version" != "$installed_version" ] \
   || [ "$latest_version" != "$running_version" ] \
   || [ "$installed_version" != "$running_version" ]
then
        # We have at least two kernels that we have reason to think the
        # user wants, so don't save the second-newest version.
        previous_version=
fi

Поэтому при сравнении вывода 01autoremove-kernels файл и uname -r Вы поймете, что в настоящее время рабочее ядро и новое перед ним, сведены никогда не быть удаленным тем сценарием. Там складывается, другой файл /etc/apt/apt.conf.d/01autoremove, где существуют строки:

    APT
    {
      NeverAutoRemove
      {
            "^firmware-linux.*";
            "^linux-firmware$";
      };
  VersionedKernelPackages
  {
        # linux kernels
        "linux-image";
        "linux-headers";
        "linux-image-extra";
        "linux-signed-image";
        # kfreebsd kernels
        "kfreebsd-image";
        "kfreebsd-headers";
        # hurd kernels
        "gnumach-image";
        # (out-of-tree) modules
        ".*-modules";
        ".*-kernel";
        "linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

, Таким образом, Вы могли прокомментировать их, и это позволит Вам автоудалять ядра с apt-autoremove, хотя помнят - делают это на Ваш собственный риск

36
ответ дан 22 November 2019 в 23:49

Обновление: упомянутая ссылка больше, кажется, не работает.

Вот ссылка на сценарий чистки ядра с отказоустойчивым, который Dustin Kirkland записал несколько лет назад. Это должно все еще работать над телефоном 12.04.

[удалил нерабочую ссылку]

, я собирался протестировать его на своих 14,04 машинах, но кажется, что я больше не испытываю проблему там (наконец зафиксированный по каналу регулярного обновления?). Таким образом, если кто-либо с большим количеством старых ядер на его машине хочет протестировать его, сделайте и совместно используйте свои результаты.

0
ответ дан 18 April 2019 в 01:09
KERNELS1=$(uname -r|cut -d - -f1-2); KERNELS2=$(for i in $(ls -l /vmlinuz*|awk '{print $(NF-0)}'); do echo $i |xargs basename|cut -d - -f2-3; done); dpkg -l|egrep 'linux-headers-[0-9]\.[0-9]\.[0-9]-[0-9]|linux-image-[0-9]\.[0-9]\.[0-9]-[0-9]'|egrep -v ''"${KERNELS1}"'|'"${KERNELS2}"''|awk '{print $2}'|xargs apt-get purge -y

я использую это на Ubuntu 12.04!

Это сохранит текущее рабочее ядро, а также новейшее установленное ядро (vmlinuz) и то прежде (vmlinuz.old). Все другие ядра и заголовки будут удалены.

0
ответ дан 18 April 2019 в 01:09

Для меня это помогло установить последний (X) человечность (15.10). В более ранних выпусках пакеты ядра могут быть отмечены, как вручную установлено, по крайней мере, если установлено при помощи программного обеспечения Updater, так, чтобы sudo apt-get autoremove --purge не мог удалить их. Существуют отчеты об ошибках относительно проблемы: Ошибка Ошибки № 1175637 , № 1439769

В более раннем выпуске, Вы могли попытаться отметить пакеты ядра, автоматически установленные sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$") и работать sudo apt-get autoremove --purge после этого для наблюдения, если это имеет значение. Команда все еще не должна удалять пакеты ядер, показанные в/etc/apt/apt.conf.d/01autoremove-kernels, но является самым безопасным работать apt-get autoremove с --dry-run опция сначала.

8
ответ дан 22 November 2019 в 23:49

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

Похожие вопросы: