Bug 37192

Summary: не работает обновление до Sisyphus с сервера-9.0
Product: Branch p9 Reporter: Anton Farygin <rider>
Component: aptAssignee: Ivan Zakharyaschev <imz>
Status: NEW --- QA Contact: qa-p9 <qa-p9>
Severity: critical    
Priority: P3 CC: aen, glebfm, imz, iv, lav, ldv, mike, rider, ruslandh, shevtsov.anton, zerg
Version: не указана   
Hardware: all   
OS: Linux   

Description Anton Farygin 2019-09-04 21:22:22 MSK
Сценарий такой:
сервер-9.0-beta2. Ставим минимальную установку.
Обновляем до p9 все пакеты, включая ядро.
Переключаемся в sources.list на Sisyphus.
apt-get update
apt-get dist-upgrade

Результат (выносится systemd):
[root@mailman ~]# apt-get dist-upgrade 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Завершено
Следующие пакеты будут ОБНОВЛЕНЫ:
  alterator altlinux-repos bash-completion ca-certificates cgroup colord cpp cpp8 curl dhcpcd expect firmware-intel-ucode libX11 libX11-locales libXi libatm
  libcgroup libcolord libcups libcurl libedit3 libevdev libgcc1 libgcrypt20 libharfbuzz libjasper liblua5.3 libnfsidmap libnghttp2 libnss-myhostname
  libpango libpango-gir libpciaccess libpng16 libprocps libpsl libpython3 libstdc++6 libsystemd libtiff5 libudev1 libxml2 man-db nfs-clients nfs-utils
  pam_systemd pciids perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-IO-Compress perl-Net-HTTP perl-XML-LibXML perl-XML-SAX perl-base procps python3
  python3-base rpm-macros-alterator shadow-change shadow-check shadow-convert shadow-edit shadow-groups shadow-log shadow-submap shadow-suite shadow-utils
  udev-hwdb udev-rules x11presetdrv xdg-utils
Следующие пакеты будут УДАЛЕНЫ:
  alterator-grub alterator-net-bond alterator-net-bridge alterator-net-eth alterator-net-functions bash-completion-systemd bootloader-utils
  branding-alt-server-bootloader branding-alt-server-indexhtml dmeventd dmsetup etcnet etcnet-defaults-server firmware-linux firmware-ql6312 fuse
  fuse-common ifplugd indexhtml-common interactivesystem kernel-image-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-image-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125 kernel-modules-drm-ancient-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-drm-ancient-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125
  kernel-modules-drm-nouveau-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-drm-nouveau-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125
  kernel-modules-drm-radeon-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-drm-radeon-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125 kernel-modules-drm-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-drm-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125 kernel-modules-kvm-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-kvm-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125 kernel-modules-v4l-std-def#1:4.19.66-alt1:p9+235872.100.2.1@1565688248
  kernel-modules-v4l-std-def#1:4.19.68-alt1:p9+236574.100.1.1@1566755125
  kernel-modules-virtualbox-addition-std-def#5.2.30-alt1.267074.1:p9+235872.2700.2.1@1565689866
  kernel-modules-virtualbox-addition-std-def#5.2.30-alt1.267076.1:p9+236574.3000.1.1@1566756405
  kernel-modules-virtualbox-std-def#5.2.30-alt1.267074.1:p9+235872.3000.2.1@1565689976
  kernel-modules-virtualbox-std-def#5.2.30-alt1.267076.1:p9+236574.3100.1.1@1566756474 libfuse lvm2 make-initrd make-initrd-devmapper make-initrd-luks
  make-initrd-lvm make-initrd-mdadm make-initrd-multipath make-initrd-plymouth make-initrd-ucode memtest86+ multipath-tools ntfs-3g open-vm-tools
  open-vm-tools-desktop openssh-server startup systemd systemd-analyze systemd-services systemd-sysvinit systemd-utils tuned udev udev-extras
  vconsole-setup-kludge xorg-drv-evdev xorg-drv-fbdev xorg-drv-qxl xorg-drv-vboxvideo xorg-drv-vesa xorg-drv-vmmouse xorg-drv-vmware xorg-server
  xorg-server-common
Следующие пакеты будут СОХРАНЕНЫ:
  iptables libiptables
71 будет обновлено, 0 новых установлено, 73 пакетов будет удалено и 2 не будет обновлено.
Необходимо получить 31,7MB архивов.
После распаковки будет освобождено 664MB дискового пространства.
Продолжить? [Y/n]

# apt-get install apt rpm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия apt уже установлена.
Последняя версия rpm уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 86 не будет обновлено.
Comment 1 Anton Farygin 2019-09-04 21:28:04 MSK
Тоже вполне очевидно:

# apt-get install --reinstall rpm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Reinstallation of rpm 4.13.0.1-alt12:p9+236401.100.1.1@1566384917 is not possible, it cannot be downloaded.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 86 не будет обновлено.
Comment 2 Ivan Zakharyaschev 2019-09-04 23:06:36 MSK
В файле /usr/lib/rpm/macros нужно руками значение макроса
%_priority_distbranch поменять с p9 на sisyphus 

Или сделать аналогичную запись в /etc/rpm/macros.d/

(Планируется немного реорганизовать пакеты, которые владеют файлом с этой 
настройкой. Но суть от этого не поменяется.)



On Thu, 27 Jun 2019, Dmitry V. Levin wrote:
> 
> Date: Thu, 27 Jun 2019 15:27:18 +0300   
> From: Dmitry V. Levin <ldv@altlinux.org>
> To: Anton V. Boyarshinov <boyarsh@altlinux.org>
> Cc: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>, Vladimir D. Seleznev <vseleznv@altlinux.org>, Ivan Zakharyaschev <imz@altlinux.org>
> Subject: Re: Фатальные проблемы при попытке обновления с p9 на Сизиф
  
> On Thu, Jun 27, 2019 at 03:19:25PM +0300, Anton V. Boyarshinov wrote:
> > Машина, поставленная из p9, подключён сизиф.
> 
> Правильно ли подключён сизиф?
> В файле /usr/lib/rpm/macros значение макроса
> %_priority_distbranch поменялось с p9 на sisyphus?

On Thu, 27 Jun 2019, Anton V. Boyarshinov wrote:
> 
> Date: Thu, 27 Jun 2019 15:40:26 +0300
> From: Anton V. Boyarshinov <boyarsh@altlinux.org>
> To: Dmitry V. Levin <ldv@altlinux.org>
> Cc: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>, Vladimir D. Seleznev <vseleznv@altlinux.org>, Ivan Zakharyaschev <imz@altlinux.org>, Андрей Черепанов <cas@altlinux.ru>
> Subject: Re: Фатальные проблемы при попытке обновления с p9 на Сизиф
> 
> Спасибо
>   
> > On Thu, Jun 27, 2019 at 03:19:25PM +0300, Anton V. Boyarshinov wrote:
> > > Машина, поставленная из p9, подключён сизиф.
> > 
> > Правильно ли подключён сизиф?
> > В файле /usr/lib/rpm/macros значение макроса
> > %_priority_distbranch поменялось с p9 на sisyphus?
>
> Не поменялось. Видимо, это следует считать недоработкой утилиты apt-repo
>
>
Comment 3 Anton Farygin 2019-09-05 07:00:17 MSK
Спасибо.
утилита apt-repo мне не помогла бы - в ней не очень удобно сделана работа с локальными репозиториями и я переключал репозиторий без неё.

Почему бы не переместить эту настройку  из пакета rpm в /etc/rpm/macros.d/ в пакет apt-conf-sisyphus /apt-conf-p9 ?

На этот пакет не влияет настройка priority_distbranch
Comment 4 Anton Farygin 2019-09-16 19:46:50 MSK
на ментейнера.
Comment 5 Anton Farygin 2019-10-30 08:21:17 MSK
*** Bug 37398 has been marked as a duplicate of this bug. ***
Comment 6 Anton Farygin 2019-10-30 08:22:23 MSK
проблема ещё актуальна.
Comment 7 ruslandh 2019-11-02 21:24:17 MSK
А нельзя просто сделать, чтобы в Сизифе всегда версии пакетов rpm (и на всякий случай apt) всегда были более высокие, чем в бренчах? Только для этих двух пакетов.
Comment 8 Anton Farygin 2019-11-04 09:52:14 MSK
Это не поможет.
Comment 9 Ivan Zakharyaschev 2019-11-13 19:10:10 MSK
Предлагается/планируется:

Настройку значения макроса _priority_distbranch перенести из /usr/lib/rpm/ в место для настроек (/etc/). Его может отредактировать руками администратор или другие утилиты, например, apt-repo (который надо будет этому научить).

Файл с установкой этого значения вынести в отдельный пакет rpm-conf, чтобы для изменения значения по умолчанию в бранче не надо было пересобирать пакет rpm, а у пользователя -- можно будет просто установить другую версию пакета rpm-conf при желании.

Для удобства перехода с бранча p9 на Sisyphus релиз у пакета rpm-conf будет сделан по старой схеме бэкпортирования. (Т.е. после смены sources.list на Sisyphus администратору будет достаточно сначала сделать просто apt-get install rpm-conf, чтобы дальше получать правильные обновления из Sisyphus. В случае перехода с Sisyphus на p9 надо будет сделать один даунгрейд: apt-get install rpm-conf=1.0-alt0.M90P.1) Собирать rpm в p9 со сменой релиза по этой схеме не придётся. (А пришлось бы ради удобства перехода с p9 на Sisyphus, если бы эта настройка лежала бы в пакете rpm.)

(Напомню, что эта история с явно выставленным значением _priority_distbranch появилась ради бранчей, которые форкаются, от Sisyphus например, после введения disttag. Если после форка бранча произошла бы пересборка пакета без смены релиза в p9, он бы не обновился у пользователя, потому что старый disttag "sisyphus" старше в соответствии с правилом упорядочивания версий пакетов. _priority_distbranch перекрывает это правило. Поэтому для бранчей, кроме p9 и Sisyphus, это значение вообще не определено, потому что нет практической пользы, а было бы только усложнение перехода с тех бранчей на Sisyphus или p9.)

Пакет rpm будет иметь зависимость на пакет rpm-conf. Можно ещё пакет apt-conf (там есть несколько вариантов) сделать зависимым от rpm-conf. (Небольшое неудобство, что в Sisyphus есть и пакет apt-conf-branch, но пакет rpm-conf будет один, поэтому осмысленную зависимость в apt-conf-branch написать не получится.)
Comment 10 Anton Farygin 2020-06-11 12:13:46 MSK
Схема нормальная, когда будет реализована ?
Comment 11 Anton Farygin 2020-11-17 23:35:46 MSK
такое ощущение, что только мне интересно обновляться с p9 до Sisyphus, а больше никому наш unstable репозиторий не нужен.

Сегодня опять имел удовольствие столкнуться с этим процессом и это, мягко говоря, не очень приятно.

Хотел бы поинтересоваться прогрессом, есть ли он и будет ли ?
Comment 12 Dmitry V. Levin 2020-11-17 23:39:39 MSK
(In reply to Anton Farygin from comment #11)
> такое ощущение, что только мне интересно обновляться с p9 до Sisyphus, а
> больше никому наш unstable репозиторий не нужен.
> 
> Сегодня опять имел удовольствие столкнуться с этим процессом и это, мягко
> говоря, не очень приятно.
> 
> Хотел бы поинтересоваться прогрессом, есть ли он и будет ли ?

+1

Сегодня обновлял один контейнер с p9 до Сизифа, пока не обновил apt+rpm, было плохо.
Comment 13 Dmitry V. Levin 2020-11-17 23:40:56 MSK
(In reply to Dmitry V. Levin from comment #12)
> Сегодня обновлял один контейнер с p9 до Сизифа, пока не обновил apt+rpm,
> было плохо.

apt там, конечно, по сути одинаковый, просто по привычке обновляю их вместе.
Comment 14 Anton Farygin 2020-11-17 23:46:57 MSK
У меня было странное, я не знаю как это объяснить.
1) попытка обновить систему без правки /usr/lib/rpm/macros - остаются сохранённые пакеты, порядка 200 пакетов удаляется (это, правда, был не сервер, но сути это не меняет).
2) изменяю %_priority_distbranch в /usr/lib/rpm/macros на sisyphus  - попытка обновления точно с таким же (FAIL) результатом.
3) apt-cache clean, apt-repo rm all, apt-repo add p9, apt-get update, apt-repo rm all, apt-repo add sisyphus - после этой странной жуткой нереальной магии обновление заработало нормально. Почему это случилось у меня ответа нет, но я очень хотел бы его услышать от авторов недоделанной фичи disttag, которой мы все прекрасно пользуемся с непредсказуемым (в дальнейшем) результатом.
Comment 15 Dmitry V. Levin 2020-11-18 00:00:41 MSK
(In reply to Anton Farygin from comment #14)
> 3) apt-cache clean, apt-repo rm all, apt-repo add p9, apt-get update,
> apt-repo rm all, apt-repo add sisyphus - после этой странной жуткой
> нереальной магии обновление заработало нормально.

Надо как-то перейти с языка магии на какой-то более понятный язык.
Но если apt-cache clean что-то исправляет, значит, в apt какой-то очередной глюк с cache invalidation.
Comment 16 Anton Farygin 2020-11-18 12:03:42 MSK
а разве редактирование /usr/lib/rpm/macros на предмет _priority_distbranch может триггернуть очистку кеша apt ?

Т.е.  - _priority_distbranch где-то записывается в кеше ?
Comment 17 Dmitry V. Levin 2020-11-25 13:59:21 MSK
(In reply to Ivan Zakharyaschev from comment #9)
> Предлагается/планируется:
> 
> Настройку значения макроса _priority_distbranch перенести из /usr/lib/rpm/ в
> место для настроек (/etc/). Его может отредактировать руками администратор
> или другие утилиты, например, apt-repo (который надо будет этому научить).
> 
> Файл с установкой этого значения вынести в отдельный пакет rpm-conf, чтобы
> для изменения значения по умолчанию в бранче не надо было пересобирать пакет
> rpm, а у пользователя -- можно будет просто установить другую версию пакета
> rpm-conf при желании.
> 
> Для удобства перехода с бранча p9 на Sisyphus релиз у пакета rpm-conf будет
> сделан по старой схеме бэкпортирования. (Т.е. после смены sources.list на
> Sisyphus администратору будет достаточно сначала сделать просто apt-get
> install rpm-conf, чтобы дальше получать правильные обновления из Sisyphus. В
> случае перехода с Sisyphus на p9 надо будет сделать один даунгрейд: apt-get
> install rpm-conf=1.0-alt0.M90P.1) Собирать rpm в p9 со сменой релиза по этой
> схеме не придётся. (А пришлось бы ради удобства перехода с p9 на Sisyphus,
> если бы эта настройка лежала бы в пакете rpm.)
> 
> (Напомню, что эта история с явно выставленным значением _priority_distbranch
> появилась ради бранчей, которые форкаются, от Sisyphus например, после
> введения disttag. Если после форка бранча произошла бы пересборка пакета без
> смены релиза в p9, он бы не обновился у пользователя, потому что старый
> disttag "sisyphus" старше в соответствии с правилом упорядочивания версий
> пакетов. _priority_distbranch перекрывает это правило. Поэтому для бранчей,
> кроме p9 и Sisyphus, это значение вообще не определено, потому что нет
> практической пользы, а было бы только усложнение перехода с тех бранчей на
> Sisyphus или p9.)
> 
> Пакет rpm будет иметь зависимость на пакет rpm-conf. Можно ещё пакет
> apt-conf (там есть несколько вариантов) сделать зависимым от rpm-conf.
> (Небольшое неудобство, что в Sisyphus есть и пакет apt-conf-branch, но пакет
> rpm-conf будет один, поэтому осмысленную зависимость в apt-conf-branch
> написать не получится.)

$ cat /usr/lib/rpm/macros.d/altlinux-release 
%_priority_distbranch	sisyphus
$ rpmquery -f /usr/lib/rpm/macros.d/altlinux-release
altlinux-release-sisyphus-20201124-alt1.noarch
Comment 18 Anton Farygin 2021-03-18 08:15:59 MSK
Я так понимаю что осталось придумать как это сделать в p9.
Может быть, apt-repo есть смысл пропатчить, что бы он добавлял %_priority_distbranch ?
Comment 19 Ivan A. Melnikov 2021-03-30 16:08:23 MSK
*** Bug 39845 has been marked as a duplicate of this bug. ***
Comment 20 Ivan A. Melnikov 2021-03-31 12:41:26 MSK
(In reply to Dmitry V. Levin from comment #17)
> $ cat /usr/lib/rpm/macros.d/altlinux-release 
> %_priority_distbranch	sisyphus
> $ rpmquery -f /usr/lib/rpm/macros.d/altlinux-release
> altlinux-release-sisyphus-20201124-alt1.noarch

Попробовал сегодня обновить тестовую систему с p9 (установлена с какого-то предварительного Simply 9.1, обновлена до актуального p9) до Сизифа так:

1. изминил в /etc/apt/sources.list.d источники на Сизиф; apt-get update;
2. установил altlinux-release-sisyphus; пришлось сказать apt'у  "Yes, do as I say!", ну да ладно.
3. (наверное необязательно, но я делал) apt-get clean; apt-get update;
4. apt-get dist-upgrade
5. добавить autoremove и update-kernel по вкусу (я не делал пока).

Вроде бы всё отработало как надо, ничего нужного не удалилось.
Comment 21 Anton Farygin 2021-03-31 13:46:26 MSK
Как вариант можно собрать какой-то аналог altlinux-release-sisyphus в p9, в котором будет лежать только нужный параметр макроса.
Comment 22 Ivan A. Melnikov 2021-04-07 13:26:04 MSK
(In reply to Anton Farygin from comment #21)
> Как вариант можно собрать какой-то аналог altlinux-release-sisyphus в p9, в
> котором будет лежать только нужный параметр макроса.

Мне вообще-то нравится идея, что на системе, обновлённой до Сизифа, в /etc/os-release будет написано Sisyphus. Это как бы правда. Так что процедура с установкой altlinux-release-sisyphus выглядит не слишком ужасной, достаточно её документировать на wiki например.