Удаление силы нежелательного linux-image-extra* пакеты

Короче говоря, я застреваю с горсткой нежелательных, полунастроенных пакетов изображения, от которых я пытаюсь избавиться:

$ dpkg -l |grep linux-im
iF  linux-image-3.13.0-100-generic       3.13.0-100.147 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF  linux-image-3.13.0-101-generic       3.13.0-101.148 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF  linux-image-3.13.0-92-generic        3.13.0-92.139  i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF  linux-image-3.13.0-93-generic        3.13.0-93.140  i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF  linux-image-3.13.0-96-generic        3.13.0-96.143  i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iH  linux-image-extra-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH  linux-image-extra-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH  linux-image-extra-3.13.0-92-generic  3.13.0-92.139  i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH  linux-image-extra-3.13.0-93-generic  3.13.0-93.140  i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH  linux-image-extra-3.13.0-96-generic  3.13.0-96.143  i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP

Эти изображения на самом деле бесполезны, потому что мои 32-разрядные 14,04 системных жизней в контейнере OpenVZ, который только ответственен за ядро. Как Вы видите, значительно старше:

$ uname -r
2.6.32-042stab116.2

Таким образом в отличие от самых подобных вопросов, фокусирующихся на, то, как удалить старые изображения ядра после стандартных обновлений, что я пытаюсь сделать здесь, должно ПОЛНОСТЬЮ ПРОИЗВЕСТИ ЧИСТКУ ВСЕХ ЭТИХ 3,13 ПАКЕТОВ, которые не должны быть там во-первых.


Вот сводка моих попыток до сих пор.

Попытка удалить/произвести чистку пакеты обычные пути (apt-get, apt, aptitude, это не имеет значения), кажется, не работает, из-за очевидного порочного круга.

sudo apt-get purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic

Как Вы видите от вывода, ничто на самом деле не удалено. С другой стороны, aptitude умеет добраться немного далее:

sudo aptitude purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic

В конце этого процесса, *image-3.13*s не стало, вместе с соответствием файлам и папкам, обычно найденным в /boot и в /lib/modules, но image-extraо s все еще сообщают столь же полуустановленные (даже при том, что они, кажется, не содержат файлов, как проверено dpkg -L...)

Кроме того, зависимости теперь повреждаются как повторение, что чистка на этом этапе вызывает склонный жаловаться на недостающие файлы/папки в /boot и в /lib/modules. Я пытался поместить фиктивные файлы в ожидаемых местоположениях, как предложено сюда, но в конце я сталкиваюсь с исходными ошибками. Следующей, я верю, является решающая выборка:

[...]
Removing linux-image-extra-3.13.0-101-generic (3.13.0-101.148) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-101-generic
E: /usr/share/initramfs-tools/hooks/fixrtc failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.13.0-101-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-101-generic (--purge):
subprocess installed post-removal script returned error exit status 1
[...]

После попытки, неудачно, предположительно, возможности применения ядерного оружия:

sudo dpkg --remove --force-remove-reinstreq package_name

У меня закончились идеи.

7
задан 13 April 2017 в 05:23

3 ответа

Учитывая, что:

  • linux-image-3.13.0-XXX-generic были успешно очищены
  • linux-image-extra-3.13.0-XXX-generic все еще сообщаются, как полуустановлено
  • никакие в настоящее время устанавливаемые пакеты не зависят от них image-extras
  • ни одно из этих изображений не должно быть там во-первых (так как 2,6 ядра обеспечиваются хостом контейнер OpenVZ),
  • ни одна из традиционных попыток не преуспевает в том, чтобы чистить систему

Затем возможный подход должен сильно произвести чистку тех повисшие записи от dpkg база данных, как предложено здесь.

Пожалуйста, примите во внимание: это - hackish, низкий уровень, потенциально опасная операция.

  • ищите любые файлы, принадлежащие пакету, который Вы хотите удалить (попытка $ dpkg -L linux-image-extra-3.13.0-XXX-generic) и удалите их
  • откройте файл /var/lib/dpkg/status, найдите и удалите блок (блоки) текста, описывающего пакет (пакеты), о котором Вы хотите, чтобы dpkg забыл
  • будьте дополнительны осторожный относительно сохранения пустых строк между дескрипторами пакета, пробелами в начале строк, и т.д. Они говорят, что способная база данных является непрощающей опечаток.
  • после того, чтобы сохранить файл состояния, dpkg а также все apt- связанные программы должны вернуться к нормальному
2
ответ дан 23 November 2019 в 06:54

Выполнение ls /boot должно показать приблизительно vmlinuz-X.XX.XX файлы. Сделайте apt-get purge linux-image-X.XX.XX-generic для каждого, но НЕ УДАЛЯЮТ ядро, которое Вы выполняете. Можно проверить который с uname -r.

0
ответ дан 23 November 2019 в 06:54

Я использую следующее в сценарии удара для уничтожения всего кроме активного ядра:

dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e "$(uname -r | cut -f1,2 -d"-")" | grep -e "[0-9]" | grep -E "(image|headers)" | xargs sudo apt-get -y purge

Это вполне близко к тому, что Вы вызвали, но возможно dpkg необходимое различие.

полный набор сценариев здесь, если заинтересовано:
https://github.com/mtompkins/linux-kernel-utilities

0
ответ дан 23 November 2019 в 06:54

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

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