Bug 55977

Summary: remove-old-kernels не предлагает удалить ядра, которых нет в репозитории
Product: Sisyphus Reporter: Антон Мидюков <antohami>
Component: update-kernelAssignee: Vitaly Chikunov <vt>
Status: CLOSED MOVED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: arseny, boyarsh, evg, klark, lav, mike, vt
Version: unstable   
Hardware: all   
OS: Linux   

Description Антон Мидюков 2025-09-14 14:01:40 MSK
remove-old-kernels не предлагает удалить ядра с другими flavour, которых нет в репозитории.
Исключением должно быть только запущенное ядро.
Это необходимо сделать, так как теперь происходит автоматический переход с flavour_pre на flavour_next при исчезновении из репозитория flavour_pre. Недопустимо накопление старых неподдерживаемых flavour_pre в системе.
Comment 1 Vitaly Chikunov 2025-09-14 16:01:21 MSK
remove-old-kernels -A?
Comment 2 Leonid Krivoshein 2025-09-14 16:13:22 MSK
(In reply to Vitaly Chikunov from comment #1)
> remove-old-kernels -A?
Не работает. Последние ядра других флейворов не удаляются даже с -b -A.
Comment 3 Vitaly Chikunov 2025-09-14 16:16:41 MSK
Баг что не работает опция -A?
Comment 4 Leonid Krivoshein 2025-09-14 16:21:30 MSK
Сейчас в c10f2 после переключения на 6.12 работает только такой сценарий:

# remove-old-kernels -a -B
# rpm -e kernel-image-un-def $(env LANG=C rpm -e kernel-image-un-def 2>&1 |
  grep kernel-modules |awk '{print $8}')

По-моему, баг должен быть о том, что нужно удалять ядра всех флейворов (с -a) или указанных (-t), кроме текущего, если мы загрузились на численно более свежей версии, независимо от того, что там лежит или не лежит в репозитории.
Comment 5 Leonid Krivoshein 2025-09-14 16:24:21 MSK
(In reply to Vitaly Chikunov from comment #3)
> Баг что не работает опция -A?
Пробовал разные регистры, и --all, не работает.
Comment 6 Vitaly Chikunov 2025-09-14 16:24:49 MSK
В примере не опция -A.
Comment 7 Leonid Krivoshein 2025-09-14 16:39:49 MSK
(In reply to Leonid Krivoshein from comment #5)
> (In reply to Vitaly Chikunov from comment #3)
> > Баг что не работает опция -A?
> Пробовал разные регистры, и --all, не работает.
Сейчас перепроверил с -A, не обновляя пакетной базы, т.е. без dist-upgrade, всё работает. Возможно я натыкался на регрессию. Сейчас ещё раз перепроверю полное обновление.
Comment 8 Vitaly Chikunov 2025-09-14 16:52:58 MSK
-a -A -B запутывают я согласен что изъян UI/UX. Вроде опции осмысленные, если их понять, но когда "через месяц" забываешь, то уже не понятно что передавать и многие передают наугад.

-B вообще не надо использовать никогда, надо её убрать.
Comment 9 Leonid Krivoshein 2025-09-14 16:54:37 MSK
Почему-то не работают:

-t un-def
-B -t un-def
-a
-B -a

С -A работает, видимо был невнимателен.
Comment 10 Vitaly Chikunov 2025-09-14 18:38:11 MSK
(Продолжение про UI/UX): у -t тоже смысл меняется, это не то ядро которое мы хотим удалить а то которое хотим оставить. В общем эти утилиты это полная катастрофа.
Comment 11 Антон Мидюков 2025-09-14 21:06:27 MSK
(Ответ для Leonid Krivoshein на комментарий #4)
> Сейчас в c10f2 после переключения на 6.12 работает только такой сценарий:
> 
> # remove-old-kernels -a -B
> # rpm -e kernel-image-un-def $(env LANG=C rpm -e kernel-image-un-def 2>&1 |
>   grep kernel-modules |awk '{print $8}')
> 
> По-моему, баг должен быть о том, что нужно удалять ядра всех флейворов (с
> -a) или указанных (-t), кроме текущего, если мы загрузились на численно
> более свежей версии, независимо от того, что там лежит или не лежит в
> репозитории.

Нет. Я написал конкретный use case - предлагать по дефолту к удалению ядра с flavour'ами, которых нет в репозитории, помимо старых версий текущего flavour'а. И объяснил чем это вызвано.
Comment 12 Антон Мидюков 2025-09-14 21:07:18 MSK
(Ответ для Vitaly Chikunov на комментарий #1)
> remove-old-kernels -A?

Я предлагаю изменить дефолт.
Comment 13 Vitaly Chikunov 2025-09-23 10:11:31 MSK
Тестовое задание 395606
Comment 14 Антон Мидюков 2025-09-26 13:01:20 MSK
(Ответ для Vitaly Chikunov на комментарий #13)
> Тестовое задание 395606

Я попробовал. Цифровые и un-def удаляет, когда их нет в репозитории, сколько ядрам дней значения не имеет, текущее загруженное ядро не трогает, другие flavour'ы не трогает. Так что в целом то, что требовалось.
Comment 15 Vitaly Chikunov 2025-09-26 13:04:17 MSK
Надо заревьювить код, но так как это никто другой не будет делать надо самому забыть.
Comment 16 Leonid Krivoshein 2025-09-27 03:15:27 MSK
(In reply to Vitaly Chikunov from comment #15)
> Надо заревьювить код, но так как это никто другой не будет делать надо
> самому забыть.
Я смотрел его сразу мельком, одна опечатка с опцией -B есть -- вместо ;; в конце кейса ;& такое вот. https://git.altlinux.org/tasks/395606/gears/300/git?p=git;a=commitdiff;h=9ed6ec543269468962f6578a9e0c3e120a7c3d92
Comment 17 Vitaly Chikunov 2025-09-27 03:28:43 MSK
Спасибо, но это валидный код в bash.
Comment 18 Repository Robot 2025-09-27 04:28:25 MSK
update-kernel-1.21-alt1 -> sisyphus:

Thu Sep 25 2025 Vitaly Chikunov <vt@altlinux> 1.21-alt1
- remove-old-kernels: Remove flavours deleted from the repository (ALT#55977).
- remove-old-kernels: Treat stable kernels as single flavour.
Comment 19 Vitaly Chikunov 2025-10-01 02:22:10 MSK
Да, энный блин комом, и в логике оказался таки баг, 6.16 не удалилось при релизе 6.17, так как внутри latest псевдо-флейвора ядра обрабатываются как -a (даже при передаче -A).
Comment 20 Vitaly Chikunov 2025-10-01 02:24:38 MSK
REOPEN то я зря нажал так как это уже не проблема удаления EOL ядер.