Принудительное удаление нежелательных пакетов 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

Таким образом, в отличие от большинства подобных вопросов, посвященных удалению старых изображений ядра после обычных обновлений, я пытаюсь сделать это ПОЛНОСТЬЮ ПРОВЕРИТЬ ВСЕ THESE 3.13 ПАКЕТЫ, которых не должно быть в первую очередь.

old

Попытка удалить / очистить пакеты обычные пути (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* исчезли вместе с соответствующими файлами и папками, обычно находящимися в [ f12] и в /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

У меня кончились идеи. [!d18 ]

1
задан 13 April 2017 в 15:23

2 ответа

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

0
ответ дан 23 May 2018 в 03:43
  • 1
    @Zanna фиксированный вопрос. – Mark Yisri 1 December 2016 в 18:24
  • 2
    круто, я предлагаю оставить одно запасное ядро ​​тоже – Zanna 1 December 2016 в 18:26
  • 3
    @MarkYisri, папка /boot показывает NO записи вообще. Как я писал, Ubuntu работает внутри контейнера OpenVZ, а ядро ​​(см. Q) принадлежит хосту, я не контролирую его. Кроме того, при отсутствии apt-get purge эти нерелевантные пакеты суть проблемы. – Giuseppe 1 December 2016 в 20:34

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

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 является необходимой разницей. [ ! d1]

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

0
ответ дан 23 May 2018 в 03:43
  • 1
    насколько я могу судить, эта строка просто вызывает apt-get purge для всех применимых пакетов. Я уже много раз пытался это сделать, но безрезультатно. – Giuseppe 5 December 2016 в 21:13
  • 2
    Это действительно все, но я не уверен, правильно ли вы передавали имена пакетов в некотором смысле и надеялись, что вызов dpkg может его обработать. Не беспокойся. – Mark 6 December 2016 в 04:56

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

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