Bug 38772

Summary: update-kernel неправильно вычисляет последнюю версию модуля
Product: Sisyphus Reporter: Valery Sinelnikov <greh>
Component: update-kernelAssignee: Sergey Novikov <sotor>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aas, boyarsh, evg, lav, mike, sin, sotor, vt
Version: unstable   
Hardware: all   
OS: Linux   

Description Valery Sinelnikov 2020-07-31 17:32:14 MSK
При обновлении модулей virtualbox версия 6.1.8 сменилась версией 6.1.12a.
Но при установке модулей с помощью update-kernel выбирается более старая версия.

Проблема выглядит следующим образом:

# update-kernel -n -f
Running kernel version: kernel-image-std-def-1:5.4.51-alt1
Checking for available kernel packages...
Try to install new kernel kernel-image-std-def-1:5.4.51-alt1:p9+254734.100.2.1@1594405455 and update its modules [y]/n? yes
ALLMODULES=  kernel-modules-accel-ppp-std-def#1.12.0-alt1.328755.1:p9+254734.300.2.1@1594405549
  kernel-modules-acpi_call-std-def#0.1-alt5.k.328755.1:p9+254734.400.2.1@1594405578
  kernel-modules-bbswitch-std-def#0.8-alt1.k.328755.1:p9+254734.500.2.1@1594405607
  kernel-modules-bcmwl-std-def#6.30.223.248-alt17.328755.1:p9+254734.600.2.1@1594405641
  kernel-modules-ch34x-std-def#20180821-alt1.328755.1:p9+254734.700.2.1@1594405672
  kernel-modules-dm-secdel-std-def#1:1.0.7-alt2.328755.1:p9+254734.1000.2.1@1594405700
  kernel-modules-drbd9-std-def#1:9.0.23-alt1.328755.1:p9+254734.1100.2.1@1594405770
  kernel-modules-drm-ancient-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-drm-nouveau-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-drm-radeon-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-drm-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-e1000e-std-def#3.4.2.1-alt2.328755.1:p9+254734.1200.2.2@1594410299
  kernel-modules-ide-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-ipset-std-def#7.5-alt1.328755.1:p9+254734.1300.2.1@1594405873
  kernel-modules-ipt_netflow-std-def#2.5-alt1.k.328755.1:p9+254734.1600.2.1@1594405996
  kernel-modules-ipt-ratelimit-std-def#0.3.1-alt1.328755.1:p9+254734.1400.2.1@1594405903
  kernel-modules-ipt-so-std-def#1.0-alt4.328755.1:p9+254734.1500.2.2@1594410387
  kernel-modules-kvdo-std-def#6.2.2.117-alt1.328755.1:p9+254734.1700.2.1@1594406064
  kernel-modules-LiME-std-def#1.8.1-alt1.328755.1:p9+254734.200.2.1@1594405516
  kernel-modules-linux-gpib-std-def#4.3.0-alt3.328755.1:p9+254734.2000.2.1@1594406113
  kernel-modules-lsadrv-std-def#1:1.2.3-alt4.328755.1:p9+254734.2100.2.1@1594406143
  kernel-modules-ndpi-std-def#2.6-alt2.328755.1:p9+254734.2200.2.1@1594406215
  kernel-modules-nvidia-std-def#450.57-alt1.328755.1:p9+255451.600.1.1@1595858236
  kernel-modules-nxp-pn71xx-getmobit-std-def#1.4-alt1.328755.1:p9+254734.2400.2.1@1594406367
  kernel-modules-r8168-std-def#8.048.02-alt1.k.328755.1:p9+254734.2500.2.1@1594406409
  kernel-modules-rtl8723de-std-def#5.1.1.8-alt15.328755.1:p9+254734.2600.2.1@1594406498
  kernel-modules-rtl8821ce-std-def#5.5.2-alt1.328755.1:p9+254734.2700.2.1@1594406533
  kernel-modules-staging-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-tripso-std-def#1.1-alt1.328755.1:p9+254734.3000.2.1@1594406564
  kernel-modules-v4l-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
  kernel-modules-vhba-std-def#20190410-alt1.k.328755.1:p9+254734.3100.2.1@1594406593
  kernel-modules-virtualbox-addition-guest-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
  kernel-modules-virtualbox-addition-guest-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
  kernel-modules-virtualbox-addition-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
  kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
  kernel-modules-virtualbox-addition-video-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
  kernel-modules-virtualbox-addition-video-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
  kernel-modules-virtualbox-std-def#6.1.12a-alt2.328755.1:p9+255196.400.2.1@1595497914
  kernel-modules-virtualbox-std-def#6.1.8-alt1.328755.1:p9+254734.3300.2.1@1594406713
  kernel-modules-wireguard-std-def#1.0.20200712-alt1.328755.1:p9+254957.200.1.1@1594810985
  kernel-modules-xtables-addons-std-def#3.9-alt1.328755.1:p9+254734.3500.2.1@1594406795
  kernel-modules-zfs-std-def#0.8.4-alt1.328755.1:p9+254734.3600.2.1@1594406883
update-kernel: kernel-modules-bcmwl is installed, trying to update...
module=  kernel-modules-bcmwl-std-def#6.30.223.248-alt17.328755.1:p9+254734.600.2.1@1594405641
update-kernel: kernel-modules-drm-ancient is installed, trying to update...
module=  kernel-modules-drm-ancient-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-drm-nouveau is installed, trying to update...
module=  kernel-modules-drm-nouveau-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-drm-radeon is installed, trying to update...
module=  kernel-modules-drm-radeon-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-drm is installed, trying to update...
module=  kernel-modules-drm-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-e1000e is installed, trying to update...
module=  kernel-modules-e1000e-std-def#3.4.2.1-alt2.328755.1:p9+254734.1200.2.2@1594410299
update-kernel: kernel-modules-rtl8723de is installed, trying to update...
module=  kernel-modules-rtl8723de-std-def#5.1.1.8-alt15.328755.1:p9+254734.2600.2.1@1594406498
update-kernel: kernel-modules-rtl8821ce is installed, trying to update...
module=  kernel-modules-rtl8821ce-std-def#5.5.2-alt1.328755.1:p9+254734.2700.2.1@1594406533
update-kernel: kernel-modules-staging is installed, trying to update...
module=  kernel-modules-staging-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-v4l is installed, trying to update...
module=  kernel-modules-v4l-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161
update-kernel: kernel-modules-virtualbox-addition-guest is installed, trying to update...
module=  kernel-modules-virtualbox-addition-guest-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox-addition-guest is installed, trying to update...
module=  kernel-modules-virtualbox-addition-guest-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox-addition is installed, trying to update...
module=  kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox-addition is installed, trying to update...
module=  kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox-addition-video is installed, trying to update...
module=  kernel-modules-virtualbox-addition-video-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox-addition-video is installed, trying to update...
module=  kernel-modules-virtualbox-addition-video-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
update-kernel: kernel-modules-virtualbox is installed, trying to update...
module=  kernel-modules-virtualbox-std-def#6.1.8-alt1.328755.1:p9+254734.3300.2.1@1594406713
update-kernel: kernel-modules-virtualbox is installed, trying to update...
module=  kernel-modules-virtualbox-std-def#6.1.8-alt1.328755.1:p9+254734.3300.2.1@1594406713
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия kernel-image-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405455 уже установлена.
Последняя версия kernel-modules-bcmwl-std-def#6.30.223.248-alt17.328755.1:p9+254734.600.2.1@1594405641 уже установлена.
Последняя версия kernel-modules-drm-ancient-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-drm-nouveau-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-drm-radeon-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-drm-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-e1000e-std-def#3.4.2.1-alt2.328755.1:p9+254734.1200.2.2@1594410299 уже установлена.
Последняя версия kernel-modules-rtl8723de-std-def#5.1.1.8-alt15.328755.1:p9+254734.2600.2.1@1594406498 уже установлена.
Последняя версия kernel-modules-rtl8821ce-std-def#5.5.2-alt1.328755.1:p9+254734.2700.2.1@1594406533 уже установлена.
Последняя версия kernel-modules-staging-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-v4l-std-def#1:5.4.51-alt1:p9+254734.100.2.1@1594405161 уже установлена.
Последняя версия kernel-modules-virtualbox-std-def#6.1.8-alt1.328755.1:p9+254734.3300.2.1@1594406713 уже установлена.
Последняя версия kernel-modules-virtualbox-std-def#6.1.8-alt1.328755.1:p9+254734.3300.2.1@1594406713 уже установлена.
Следующие пакеты будут УДАЛЕНЫ:
  kernel-modules-virtualbox-addition-guest-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
  kernel-modules-virtualbox-addition-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
  kernel-modules-virtualbox-addition-video-std-def#6.1.12a-alt1.328755.1:p9+255196.500.2.1@1595497973
Следующие НОВЫЕ пакеты будут установлены:
  kernel-modules-virtualbox-addition-guest-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
  kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
  kernel-modules-virtualbox-addition-video-std-def#6.1.8-alt1.328755.1:p9+254734.3200.2.1@1594406648
0 будет обновлено, 3 новых установлено, 3 пакетов будет удалено и 6 не будет обновлено.
Необходимо получить 0B/205kB архивов.
После распаковки будет освобождено 176B дискового пространства.
Скачивание пакетов завершено в режиме 'только скачать'.


Причина состоит в том что имена файлов с версиями сортируются в лексикографическом порядке:

# grep "sort -r -u" /usr/sbin/update-kernel 
	module=$(echo "$ALLMODULES" | grep "^[[:space:]]*${module_pkgname}-${kernel_flavour}#" | sort -r -u | head -1)

# echo -e "kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+255196.500.2.1@1595497973\nkernel-modules-virtualbox-addition-std-def#6.1.12a-alt1.328755.1:p9+254734.3200.2.1@1594406648"
kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+255196.500.2.1@1595497973
kernel-modules-virtualbox-addition-std-def#6.1.12a-alt1.328755.1:p9+254734.3200.2.1@1594406648

# echo -e "kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+255196.500.2.1@1595497973\nkernel-modules-virtualbox-addition-std-def#6.1.12a-alt1.328755.1:p9+254734.3200.2.1@1594406648" | grep "^[[:space:]]*${module_pkgname}-${kernel_flavour}#" | sort -r -u | head -1
kernel-modules-virtualbox-addition-std-def#6.1.8-alt1.328755.1:p9+255196.500.2.1@1595497973
Comment 1 Valery Sinelnikov 2020-07-31 17:41:39 MSK
Воспроизвести проблему можно на этой таске:

#255196 EPERM #3 p9 virtualbox.git=6.1.12a-alt2 kernel-modules.git=sisyphus/kernel-modules-virtualbox-addition-un-def-6.1.12a-alt1 kernel-modules.git=sisyphus/kernel-modules-virtualbox-un-def-6.1.12a-alt2 kernel-modules.git=sisyphus/kernel-modules-virtualbox-std-def-6.1.12a-alt2 kernel-modules.git=sisyphus/kernel-modules-virtualbox-addition-std-def-6.1.12a-alt1
Comment 2 Sergey Novikov 2020-08-03 13:57:22 MSK
(Ответ для Valery Sinelnikov на комментарий #1)
> Воспроизвести проблему можно на этой таске:
> 
> #255196 EPERM #3 p9 virtualbox.git=6.1.12a-alt2

Пересоберите таск, пожалуйста, так как в p9 обновилось ядро и проблема не воспроизводится (не удается установить модуль kernel-modules-virtualbox-addition-guest-std-def#6.1.12a)
Comment 3 Valery Sinelnikov 2020-08-03 15:54:07 MSK
(Ответ для Sergey Novikov на комментарий #2)
> (Ответ для Valery Sinelnikov на комментарий #1)
> > Воспроизвести проблему можно на этой таске:
> > 
> > #255196 EPERM #3 p9 virtualbox.git=6.1.12a-alt2
> 
> Пересоберите таск, пожалуйста, так как в p9 обновилось ядро и проблема не
> воспроизводится (не удается установить модуль
> kernel-modules-virtualbox-addition-guest-std-def#6.1.12a)

Таска успешно пересобралась.
Comment 4 Sergey Novikov 2020-08-03 16:14:21 MSK
Предлагаю заменить:
$(echo "$ALLMODULES" | grep "^[[:space:]]*${module_pkgname}-${kernel_flavour}#" | sort -r -u | head -1)
на:
$(echo "$ALLMODULES" | grep "^[[:space:]]*${module_pkgname}-${kernel_flavour}#" | sort -r -u -V | head -1)
Comment 5 Sergey Novikov 2020-08-03 17:01:45 MSK
Починил в таске #255802 просьба заапрувить.
Comment 6 Michael Shigorin 2020-08-03 17:41:17 MSK
(Ответ для Sergey Novikov на комментарий #5)
> Починил в таске #255802 просьба заапрувить.
Готово.
Comment 7 Repository Robot 2020-08-03 17:52:01 MSK
update-kernel-0.9.19-alt1 -> sisyphus:

 Mon Aug 03 2020 Sergey Novikov <sotor@altlinux> 0.9.19-alt1
 - update-kernel: fix incorrect comparison of versions of duplicate modules
   (closes: #38772)