Если этот пакет установить в систему (неважно, по какой причине - может быть ошибка по зависимостям или пользователь влез не туда), а потом после перезагрузки удалить - система перестаёт загружаться и вываливается в maintenance mode. Пакет при своём удалении должен подчищать за собой /etc/systemd/system/default.target, если он есть.
> должен подчищать за собой > /etc/systemd/system/default.target, если он есть. Если он указывает на alterator-setup. P.S. У меня, например, есть default.target -> /lib/systemd/system/graphical.target
Вообще-то это проблемы того невнимательного майнтейнера, который влепил такую зависимость, или того невнимательного пользователя, который ставит в систему что попало, не глядя на предупреждения: --- 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: я в подобные пакеты когда-то старался рассовывать конфликты на загрузчики, чтобы их было невозможно поставить в работающую систему без уж совсем очевидных предупреждений о тяжёлых последствиях -- но конкретно в этом случае так поступить не получится...
(Ответ для Michael Shigorin на комментарий #2) > Вообще-то это проблемы того невнимательного майнтейнера, который влепил > такую зависимость, или того невнимательного пользователя, который ставит в > систему что попало, не глядя на предупреждения: Нет, это проблема конкретного пакета, который не убирает за собой при удалении. Особенно, когда пользователь _уже_ поставил пакет, но ещё _ничего не сделал_ с системой после загрузки, когда понял, что что-то идёт не так. Мне кажется, что удаление пакета А должно возвращать систему в состояние, предшествующее установке пакета А, что в данном случае не наблюдается.
(Ответ для Олег Соловьев на комментарий #3) > Мне кажется, что удаление пакета А должно возвращать систему в состояние, > предшествующее установке пакета А, что в данном случае не наблюдается. Если прочитать с, видимо, подразумеваемыми куда более сильными ограничениями "удаление одиночного пакета А непосредственно после установки этого же пакета" -- и то не всегда возможно (а в исходной формулировке вообще именно "кажется"). Хотя когда возможно (и делать больше нечего) -- свойство, конечно, хорошее ;-) В то время, когда делал этот пакет -- было слишком много куда более важных дел вроде поддержки того же UEFI, помнится. PS: при _штатном_ функционировании, разумеется, подчищает. Возможно, это действительно лучше вынести в %preun, чтобы отрабатывало в любом варианте. PPS: а exit 1 в %pre было бы хорошо делать, если есть надёжный способ отличить установку при помощи mkimage от установки в систему -- я сходу не соображу (разве что косвенные признаки вроде существования /.in/, если это так).
Я думаю, что: 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 для прописывания параметров загрузки.
> cmdline загрузчика systemd.unit=setup.target при сборке rootfs или > installer-feature-такая-то при установке. Это точно костыли. > 2. Для компьютеров без мониторов, можно переключиться на цель > setup-vnc.target и настроить компьютер через vnc. В alterator-setup при установке пакета нужно научиться включать необходимую цель, если не нужен дефолт.
(Ответ для Sergey V Turchin на комментарий #6) > > 2. Для компьютеров без мониторов, можно переключиться на цель > > setup-vnc.target и настроить компьютер через vnc. > В alterator-setup при установке пакета нужно научиться включать необходимую > цель, если не нужен дефолт. И как такое сделать? Конфиг парсить при установке пакета?
> И как такое сделать? Конфиг парсить при установке пакета? Переменную окружения достаточно.
(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, требующий первоначальной настройки, существенно отличается от системы, куда просто поставили пакет.
(Ответ для 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.
юзштп Ещё раз наступил на эти же грабли
(Ответ для Олег Соловьев на комментарий #11) > Ещё раз наступил на эти же грабли Видимо, придётся сделать пакет, который будет подтирать задницу alterator-setup-у.
(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.
(Ответ для Антон Мидюков на комментарий #13) > Полгода назад я завис над тем, как сделать: > "2. незачем подменять default.target. Вместо этого стоит прописывать в > cmdline загрузчика systemd.unit=setup.target при сборке rootfs или > installer-feature-такая-то при установке." > > Так что думаю теперь с этим не заморачиваться и оставить, как есть, но > унести создание default.target в mkimage-profiles и > installer-feature-alterator-setup-stage2. Всяко лучше, чем поставить табличку "Не влезай! Убьёт!" и объявить это исчерпывающей защитой от дурака. Особенно, когда ты ставишь пакет, когда ты _знаешь_ его имя и негде посмотреть description.
(Ответ для Антон Мидюков на комментарий #13) > Так что думаю теперь с этим не заморачиваться и оставить, как есть, но > унести создание default.target в mkimage-profiles и > installer-feature-alterator-setup-stage2. Т.е. чистить default.target так никто и не будет?
(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 всё подчищается и сейчас. Т.е. предлагаю бороться не со следствием болезни, а с её причиной.
alterator-setup обязан при удалении почистить за собой даже если его только что поставили. Скажите прямо, он будет это делать или поискать другой пакет?
(In reply to Sergey V Turchin from comment #17) > alterator-setup обязан при удалении почистить за собой даже если его только > что поставили. > Скажите прямо, он будет это делать или поискать другой пакет? За alterator-setup не нужно будет ничего подчищать: [#282941] TESTED alterator-setup.git=0.3.10-alt1
1. За кем теперь нужно будет подчищать? 2. Кто это будет делать?
(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 и самого себя.
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
Да. Так всё красиво получается.
> добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup. Т.е. у пользорвателя теперь нет возможности включить или выключить эту функциональность при установке системы?
(In reply to Sergey V Turchin from comment #23) > > добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup. > Т.е. у пользователя теперь нет возможности включить или выключить эту > функциональность при установке системы? При загрузке пользователь может написать параметр ядра systemd.unit=setup.target, чтобы при загрузке запустился alterator-setup.
> При загрузке пользователь может написать параметр ядра Не может. Требуется это делать мышью выбирая опции при установке системы.
(Ответ для Sergey V Turchin на комментарий #25) > > При загрузке пользователь может написать параметр ядра > Не может. Требуется это делать мышью выбирая опции при установке системы. Причём, это уже реализовано. Получается "исправление" ломает функциональность, на которую уже завязан конкретный дистрибутив, не предложив ничего взамен.
(In reply to Sergey V Turchin from comment #26) > (Ответ для Sergey V Turchin на комментарий #25) > > > При загрузке пользователь может написать параметр ядра > > Не может. Требуется это делать мышью выбирая опции при установке системы. > Причём, это уже реализовано. Получается "исправление" ломает > функциональность, на которую уже завязан конкретный дистрибутив, не > предложив ничего взамен. Заведите новый баг, с описанием проблемы. Когда что-то делаете с боку, апстрим может в один прекрасный день Вам всё сломать. Я совершенно не против исправить alterator-setup так, чтобы Вам ничего не сломать или даже починить тот пакет, который сломал. Но мне нужно понимание того, что я сломал и как работало раньше то, что я сломал. Всё это нужно описать в новом баге.
(Ответ для Антон Мидюков на комментарий #27) > Когда что-то делаете с боку С какого ещё боку? Смена default.target это "сбоку"? Так, мелочь незаметная? ;-)