Bug 39546 - При удалении пакета не удаляет default.target
Summary: При удалении пакета не удаляет default.target
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: alterator-setup (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Антон Мидюков
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-15 10:38 MSK by Олег Соловьев
Modified: 2021-08-17 18:11 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Олег Соловьев 2021-01-15 10:38:15 MSK
Если этот пакет установить в систему (неважно, по какой причине - может быть ошибка по зависимостям или пользователь влез не туда), а потом после перезагрузки удалить - система перестаёт загружаться и вываливается в maintenance mode.

Пакет при своём удалении должен подчищать за собой /etc/systemd/system/default.target, если он есть.
Comment 1 Sergey V Turchin 2021-01-15 10:53:18 MSK
> должен подчищать за собой
> /etc/systemd/system/default.target, если он есть.
Если он указывает на alterator-setup.

P.S.
У меня, например, есть
default.target -> /lib/systemd/system/graphical.target
Comment 2 Michael Shigorin 2021-01-15 17:27:52 MSK
Вообще-то это проблемы того невнимательного майнтейнера, который влепил такую зависимость, или того невнимательного пользователя, который ставит в систему что попало, не глядя на предупреждения:

---
Description :
Perform initial setup of an OEM installation (warning!)

WARNING: you really don't want to install this package
into an already configured system as it may spoil the
next boot!  Given that its sole purpose is the _initial_
configuration of a new system (like setting root password)
nobody should need that on an up-and-running host.
---

Но если у кого есть желание сделать и проверить патчик -- собирайте, конечно.

PS: я в подобные пакеты когда-то старался рассовывать конфликты на загрузчики, чтобы их было невозможно поставить в работающую систему без уж совсем очевидных предупреждений о тяжёлых последствиях -- но конкретно в этом случае так поступить не получится...
Comment 3 Олег Соловьев 2021-01-15 17:34:53 MSK
(Ответ для Michael Shigorin на комментарий #2)
> Вообще-то это проблемы того невнимательного майнтейнера, который влепил
> такую зависимость, или того невнимательного пользователя, который ставит в
> систему что попало, не глядя на предупреждения:

Нет, это проблема конкретного пакета, который не убирает за собой при удалении.
Особенно, когда пользователь _уже_ поставил пакет, но ещё _ничего не сделал_ с системой после загрузки, когда понял, что что-то идёт не так.

Мне кажется, что удаление пакета А должно возвращать систему в состояние, предшествующее установке пакета А, что в данном случае не наблюдается.
Comment 4 Michael Shigorin 2021-01-15 20:48:26 MSK
(Ответ для Олег Соловьев на комментарий #3)
> Мне кажется, что удаление пакета А должно возвращать систему в состояние,
> предшествующее установке пакета А, что в данном случае не наблюдается.

Если прочитать с, видимо, подразумеваемыми куда более сильными ограничениями "удаление одиночного пакета А непосредственно после установки этого же пакета" -- и то не всегда возможно (а в исходной формулировке вообще именно "кажется").

Хотя когда возможно (и делать больше нечего) -- свойство, конечно, хорошее ;-)
В то время, когда делал этот пакет -- было слишком много куда более важных дел вроде поддержки того же UEFI, помнится.

PS: при _штатном_ функционировании, разумеется, подчищает.  Возможно, это действительно лучше вынести в %preun, чтобы отрабатывало в любом варианте.

PPS: а exit 1 в %pre было бы хорошо делать, если есть надёжный способ отличить установку при помощи mkimage от установки в систему -- я сходу не соображу (разве что косвенные признаки вроде существования /.in/, если это так).
Comment 5 Антон Мидюков 2021-01-22 22:31:56 MSK
Я думаю, что:
1. не нужно при установке пакета подменять default.target
2. незачем подменять default.target. Вместо этого стоит прописывать в cmdline загрузчика systemd.unit=setup.target при сборке rootfs или installer-feature-такая-то при установке.

Достоинства такого решения:
1. Легко поменять цель на один раз при загрузке. Удобно при тестировании пакета.
2. Для компьютеров без мониторов, можно переключиться на цель setup-vnc.target и настроить компьютер через vnc.

Требуется:
1. Доработка mkimage-profiles;
2. Сделать installer-feature для прописывания параметров загрузки.
Comment 6 Sergey V Turchin 2021-01-25 11:02:24 MSK
> cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
> installer-feature-такая-то при установке.
Это точно костыли.

> 2. Для компьютеров без мониторов, можно переключиться на цель
> setup-vnc.target и настроить компьютер через vnc.
В alterator-setup при установке пакета нужно научиться включать необходимую цель, если не нужен дефолт.
Comment 7 Антон Мидюков 2021-01-25 11:16:46 MSK
(Ответ для Sergey V Turchin на комментарий #6)
> > 2. Для компьютеров без мониторов, можно переключиться на цель
> > setup-vnc.target и настроить компьютер через vnc.
> В alterator-setup при установке пакета нужно научиться включать необходимую
> цель, если не нужен дефолт.

И как такое сделать? Конфиг парсить при установке пакета?
Comment 8 Sergey V Turchin 2021-01-25 11:26:56 MSK
> И как такое сделать? Конфиг парсить при установке пакета?
Переменную окружения достаточно.
Comment 9 Ivan A. Melnikov 2021-01-25 12:16:59 MSK
(In reply to Антон Мидюков from comment #5)
> Я думаю, что:
> 1. не нужно при установке пакета подменять default.target

Тут согласен.

> 2. незачем подменять default.target. Вместо этого стоит прописывать в
> cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
> installer-feature-такая-то при установке.

Не на всех странных железках мы можем легко управлять командной
строкой ядра. Нужен другой и/или дополнительный механизм.

> Достоинства такого решения:
> 1. Легко поменять цель на один раз при загрузке. Удобно при тестировании
> пакета.
> 2. Для компьютеров без мониторов, можно переключиться на цель
> setup-vnc.target и настроить компьютер через vnc.

А сейчас что-то мешает так сделать?

Кстати, добавлю ещё

3. Человек, поставивший alterator-*, не так сильно пострадает. 

И с этой точки зрения я бы предложил просто доработать фичу в m-p и переключать там. Считаю очень правильным, что rootfs, требующий первоначальной настройки, существенно отличается от системы, куда просто поставили пакет.
Comment 10 Антон Мидюков 2021-01-25 12:53:17 MSK
(Ответ для Ivan A. Melnikov на комментарий #9)
> (In reply to Антон Мидюков from comment #5)
> > Я думаю, что:
> > 1. не нужно при установке пакета подменять default.target
> 
> Тут согласен.
> 
> > 2. незачем подменять default.target. Вместо этого стоит прописывать в
> > cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
> > installer-feature-такая-то при установке.
> 
> Не на всех странных железках мы можем легко управлять командной
> строкой ядра. Нужен другой и/или дополнительный механизм.
> 

На большинстве одноплатников загрузка с флешки, которую можно вставить в компьютер и подправить конфиг. И это очевиднее и проще, чем подменять default.target

> > Достоинства такого решения:
> > 1. Легко поменять цель на один раз при загрузке. Удобно при тестировании
> > пакета.
> > 2. Для компьютеров без мониторов, можно переключиться на цель
> > setup-vnc.target и настроить компьютер через vnc.
> 
> А сейчас что-то мешает так сделать?

Мешает то, что установка alterator-setup-x11vnc подменяет default.target на setup-vnс.target. Потому сейчас этот пакет не установлен в rootfs, которые загружают alterator-setup.
Comment 11 Олег Соловьев 2021-08-04 12:31:08 MSK
юзштп

Ещё раз наступил на эти же грабли
Comment 12 Sergey V Turchin 2021-08-16 13:38:10 MSK
(Ответ для Олег Соловьев на комментарий #11)
> Ещё раз наступил на эти же грабли
Видимо, придётся сделать пакет, который будет подтирать задницу alterator-setup-у.
Comment 13 Антон Мидюков 2021-08-16 16:43:16 MSK
(In reply to Sergey V Turchin from comment #12)
> (Ответ для Олег Соловьев на комментарий #11)
> > Ещё раз наступил на эти же грабли
> Видимо, придётся сделать пакет, который будет подтирать задницу
> alterator-setup-у.

Полгода назад я завис над тем, как сделать:
"2. незачем подменять default.target. Вместо этого стоит прописывать в cmdline загрузчика systemd.unit=setup.target при сборке rootfs или installer-feature-такая-то при установке."

Так что думаю теперь с этим не заморачиваться и оставить, как есть, но унести создание default.target в mkimage-profiles и installer-feature-alterator-setup-stage2.
Comment 14 Олег Соловьев 2021-08-16 16:51:03 MSK
(Ответ для Антон Мидюков на комментарий #13)
> Полгода назад я завис над тем, как сделать:
> "2. незачем подменять default.target. Вместо этого стоит прописывать в
> cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
> installer-feature-такая-то при установке."
> 
> Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
> унести создание default.target в mkimage-profiles и
> installer-feature-alterator-setup-stage2.

Всяко лучше, чем поставить табличку "Не влезай! Убьёт!" и объявить это исчерпывающей защитой от дурака.

Особенно, когда ты ставишь пакет, когда ты _знаешь_ его имя и негде посмотреть description.
Comment 15 Sergey V Turchin 2021-08-16 17:00:17 MSK
(Ответ для Антон Мидюков на комментарий #13)
> Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
> унести создание default.target в mkimage-profiles и
> installer-feature-alterator-setup-stage2.
Т.е. чистить default.target так никто и не будет?
Comment 16 Антон Мидюков 2021-08-16 17:09:53 MSK
(In reply to Sergey V Turchin from comment #15)
> (Ответ для Антон Мидюков на комментарий #13)
> > Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
> > унести создание default.target в mkimage-profiles и
> > installer-feature-alterator-setup-stage2.
> Т.е. чистить default.target так никто и не будет?

Зачем чистить то, чего не будет?
Случайно default.target на alterator-setup.target указывать не будет.
А после успешного завершения alterator-setup всё подчищается и сейчас.
Т.е. предлагаю бороться не со следствием болезни, а с её причиной.
Comment 17 Sergey V Turchin 2021-08-16 17:51:19 MSK
alterator-setup обязан при удалении почистить за собой даже если его только что поставили.
Скажите прямо, он будет это делать или поискать другой пакет?
Comment 18 Антон Мидюков 2021-08-16 17:57:14 MSK
(In reply to Sergey V Turchin from comment #17)
> alterator-setup обязан при удалении почистить за собой даже если его только
> что поставили.
> Скажите прямо, он будет это делать или поискать другой пакет?

За alterator-setup не нужно будет ничего подчищать:
[#282941] TESTED alterator-setup.git=0.3.10-alt1
Comment 19 Sergey V Turchin 2021-08-16 18:01:03 MSK
1. За кем теперь нужно будет подчищать?
2. Кто это будет делать?
Comment 20 Антон Мидюков 2021-08-16 18:13:44 MSK
(In reply to Sergey V Turchin from comment #19)
> 1. За кем теперь нужно будет подчищать?

При установке alterator-setup не будет создаваться симлинк default.target.
Поэтому удаление симлинка больше не забота пакета. Не он его будет создавать, не ему его и удалять.
Симлинк default.target будет создаваться при сборке rootfs с фичей use/oem.
Симлинк default.target будет создаваться инсталятором, если образ собран с добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup.

> 2. Кто это будет делать?

Успешно отработавший alterator-setup сам удаляет default.target и самого себя.
Comment 21 Repository Robot 2021-08-16 19:34:41 MSK
alterator-setup-0.3.10-alt1 -> sisyphus:

 Mon Aug 16 2021 Anton Midyukov <antohami@altlinux> 0.3.10-alt1
 - Not enable setup.target as default.target (Closes: 39546)
 - Add installer-feature-alterator-setup,
   installer-feature-alterator-setup-vnc
Comment 22 Sergey V Turchin 2021-08-17 10:26:55 MSK
Да. Так всё красиво получается.
Comment 23 Sergey V Turchin 2021-08-17 16:46:15 MSK
> добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup.
Т.е. у пользорвателя теперь нет возможности включить или выключить эту функциональность при установке системы?
Comment 24 Антон Мидюков 2021-08-17 17:07:36 MSK
(In reply to Sergey V Turchin from comment #23)
> > добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup.
> Т.е. у пользователя теперь нет возможности включить или выключить эту
> функциональность при установке системы?

При загрузке пользователь может написать параметр ядра systemd.unit=setup.target, чтобы при загрузке запустился alterator-setup.
Comment 25 Sergey V Turchin 2021-08-17 17:38:36 MSK
> При загрузке пользователь может написать параметр ядра
Не может. Требуется это делать мышью выбирая опции при установке системы.
Comment 26 Sergey V Turchin 2021-08-17 17:40:39 MSK
(Ответ для Sergey V Turchin на комментарий #25)
> > При загрузке пользователь может написать параметр ядра
> Не может. Требуется это делать мышью выбирая опции при установке системы.
Причём, это уже реализовано. Получается "исправление" ломает функциональность, на которую уже завязан конкретный дистрибутив, не предложив ничего взамен.
Comment 27 Антон Мидюков 2021-08-17 17:47:26 MSK
(In reply to Sergey V Turchin from comment #26)
> (Ответ для Sergey V Turchin на комментарий #25)
> > > При загрузке пользователь может написать параметр ядра
> > Не может. Требуется это делать мышью выбирая опции при установке системы.
> Причём, это уже реализовано. Получается "исправление" ломает
> функциональность, на которую уже завязан конкретный дистрибутив, не
> предложив ничего взамен.

Заведите новый баг, с описанием проблемы.

Когда что-то делаете с боку, апстрим может в один прекрасный день Вам всё сломать. Я совершенно не против исправить alterator-setup так, чтобы Вам ничего не сломать или даже починить тот пакет, который сломал. Но мне нужно понимание того, что я сломал и как работало раньше то, что я сломал. Всё это нужно описать в новом баге.
Comment 28 Sergey V Turchin 2021-08-17 18:11:25 MSK
(Ответ для Антон Мидюков на комментарий #27)
> Когда что-то делаете с боку
С какого ещё боку? Смена default.target это "сбоку"? Так, мелочь незаметная? ;-)