Bug 42149

Summary: update-kernel: ошибочно пишет, что установлено самое свежее ядро
Product: Sisyphus Reporter: Alexey Sheplyakov <asheplyakov>
Component: rpmAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: at, glebfm, imz, iv, ldv, placeholder, rider, vt
Version: unstable   
Hardware: all   
OS: Linux   

Description Alexey Sheplyakov 2022-03-16 16:40:05 MSK
# apt-cache pkgnames kernel-image-un-def
kernel-image-un-def-debuginfo#1:5.15.28-alt2:p10+296646.140.3.1@1647363290
kernel-image-un-def#1:5.15.28-alt2:p10+296646.140.3.1@1647363290
kernel-image-un-def
kernel-image-un-def#1:5.15.28-alt2:p10+296589.100.1.1@1647177359
kernel-image-un-def-checkinstall#1:5.15.28-alt2:p10+296646.140.3.1@1647363290
kernel-image-un-def-checkinstall
kernel-image-un-def-debuginfo
kernel-image-un-def#1:5.15.25-alt1:p10+295937.40.2.1@1645829159

# update-kernel -t un-def

Ожидаемый результат: устанавливается ядро kernel-image-un-def#1:5.15.28-alt2:p10+296646.140.3.1@1647363290 (и модули к нему).
Наблюдаемый результат: 

Running kernel version: kernel-image-un-def-1:5.15.28-alt2
Checking for available un-def kernel packages...
Latest kernel un-def-1:5.15.28-alt2:p10+296589.100.1.1@1647177359 is already installed on your system.
No upgrade is needed. Use -f for force.

Если сделать, как советуют, и указать ключ -f, ничего не изменяется:

Running kernel version: kernel-image-un-def-1:5.15.28-alt2
Checking for available un-def kernel packages...
Try to install new kernel kernel-image-un-def-1:5.15.28-alt2:p10+296589.100.1.1@1647177359 and update its modules [y]/n? yes
update-kernel: kernel-modules-drm is installed, trying to update...
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия kernel-image-un-def#1:5.15.28-alt2:p10+296589.100.1.1@1647177359 уже установлена.
Последняя версия kernel-modules-drm-un-def#1:5.15.28-alt2:p10+296589.100.1.1@1647177359 уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 35 не будет обновлено.
Comment 1 Alexey Sheplyakov 2022-03-16 17:02:01 MSK
update-kernel пытается понять, какая из доступных версий ядра самая свежая [1]
И спотыкается на неожиданном поведении rpmevrcmp

+ kmaxver=
++ echo 'kernel-image-un-def#1:5.15.25-alt1:p10+295937.40.2.1@1645829159
kernel-image-un-def#1:5.15.28-alt2:p10+296589.100.1.1@1647177359
kernel-image-un-def#1:5.15.28-alt2:p10+296646.140.3.1@1647363290'
++ grep kernel-image-un-def#
++ sed -e 's,^kernel-image-un-def#,,g'
+ read version
++ rpmevrcmp '' 1:5.15.25-alt1:p10+295937.40.2.1@1645829159
+ comparever=-1
+ '[' -1 -lt 0 ']'
+ kmaxver=1:5.15.25-alt1:p10+295937.40.2.1@1645829159
+ read version
++ rpmevrcmp 1:5.15.25-alt1:p10+295937.40.2.1@1645829159 1:5.15.28-alt2:p10+296589.100.1.1@1647177359
+ comparever=-1
+ '[' -1 -lt 0 ']'
+ kmaxver=1:5.15.28-alt2:p10+296589.100.1.1@1647177359
+ read version
++ rpmevrcmp 1:5.15.28-alt2:p10+296589.100.1.1@1647177359 1:5.15.28-alt2:p10+296646.140.3.1@1647363290
+ comparever=0
+ '[' 0 -lt 0 ']'
+ :

rpmevrcmp 1:5.15.28-alt2:p10+296589.100.1.1@1647177359 1:5.15.28-alt2:p10+296646.140.3.1@1647363290
0

Что очевидно неверно.

[1] http://git.altlinux.org/gears/u/update-kernel.git?p=update-kernel.git;a=blob;f=update_kernel_modules_cetus.sh;h=6912ba4249dceecd0d03ce571b6555c69b64bd8c;hb=c447c1c21f6e2f6addda222e6941899b5483af01#l244
Comment 2 Anton Farygin 2022-03-16 18:26:22 MSK
так давайте и смотреть что там не так с rpmvercmp.
насколько я знаю, disttag им игнорируется.
Comment 3 Vitaly Chikunov 2022-03-16 23:18:55 MSK
$ rpmevrcmp 1-1:3 1-1:4
0
Comment 4 Ivan A. Melnikov 2022-03-17 09:29:08 MSK
(In reply to Anton Farygin from comment #2)
> так давайте и смотреть что там не так с rpmvercmp.
> насколько я знаю, disttag им игнорируется.

И правда. У нас сейчас нет инструмента, который позволил бы из шела сравнивать весь EVRDT.
Comment 5 Repository Robot 2022-04-04 11:06:21 MSK
update-kernel-0.9.21-alt1 -> sisyphus:

 Mon Apr 04 2022 Vitaly Chikunov <vt@altlinux> 0.9.21-alt1
 - Tools cannot be used under user anymore because sudo sub-invocation is
   removed (call them under root instead).
 - Require explicit yes or enter to start installation (previously any key work
   work except no).
 - Improve package version comparison (ALT#42149).
 - Do not show epoch and disttag in package names.
 - Warn user if installed package (1 month) or APT database (1 day) are stalled.
 - Do not require install of 'apt-scripts' for package availability mark in
   list mode.
 - Show package age in list mode.