<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>39546</bug_id>
          
          <creation_ts>2021-01-15 10:38:15 +0300</creation_ts>
          <short_desc>При удалении пакета не удаляет default.target</short_desc>
          <delta_ts>2021-08-17 18:11:25 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-setup</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=40770</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Олег Соловьев">mcpain</reporter>
          <assigned_to name="Антон Мидюков">antohami</assigned_to>
          <cc>antohami</cc>
    
    <cc>iv</cc>
    
    <cc>mike</cc>
    
    <cc>underwit</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195420</commentid>
    <comment_count>0</comment_count>
    <who name="Олег Соловьев">mcpain</who>
    <bug_when>2021-01-15 10:38:15 +0300</bug_when>
    <thetext>Если этот пакет установить в систему (неважно, по какой причине - может быть ошибка по зависимостям или пользователь влез не туда), а потом после перезагрузки удалить - система перестаёт загружаться и вываливается в maintenance mode.

Пакет при своём удалении должен подчищать за собой /etc/systemd/system/default.target, если он есть.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195422</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-01-15 10:53:18 +0300</bug_when>
    <thetext>&gt; должен подчищать за собой
&gt; /etc/systemd/system/default.target, если он есть.
Если он указывает на alterator-setup.

P.S.
У меня, например, есть
default.target -&gt; /lib/systemd/system/graphical.target</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195441</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2021-01-15 17:27:52 +0300</bug_when>
    <thetext>Вообще-то это проблемы того невнимательного майнтейнера, который влепил такую зависимость, или того невнимательного пользователя, который ставит в систему что попало, не глядя на предупреждения:

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

WARNING: you really don&apos;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: я в подобные пакеты когда-то старался рассовывать конфликты на загрузчики, чтобы их было невозможно поставить в работающую систему без уж совсем очевидных предупреждений о тяжёлых последствиях -- но конкретно в этом случае так поступить не получится...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195443</commentid>
    <comment_count>3</comment_count>
    <who name="Олег Соловьев">mcpain</who>
    <bug_when>2021-01-15 17:34:53 +0300</bug_when>
    <thetext>(Ответ для Michael Shigorin на комментарий #2)
&gt; Вообще-то это проблемы того невнимательного майнтейнера, который влепил
&gt; такую зависимость, или того невнимательного пользователя, который ставит в
&gt; систему что попало, не глядя на предупреждения:

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

Мне кажется, что удаление пакета А должно возвращать систему в состояние, предшествующее установке пакета А, что в данном случае не наблюдается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195454</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2021-01-15 20:48:26 +0300</bug_when>
    <thetext>(Ответ для Олег Соловьев на комментарий #3)
&gt; Мне кажется, что удаление пакета А должно возвращать систему в состояние,
&gt; предшествующее установке пакета А, что в данном случае не наблюдается.

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

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

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

PPS: а exit 1 в %pre было бы хорошо делать, если есть надёжный способ отличить установку при помощи mkimage от установки в систему -- я сходу не соображу (разве что косвенные признаки вроде существования /.in/, если это так).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195668</commentid>
    <comment_count>5</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-01-22 22:31:56 +0300</bug_when>
    <thetext>Я думаю, что:
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 для прописывания параметров загрузки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195687</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-01-25 11:02:24 +0300</bug_when>
    <thetext>&gt; cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
&gt; installer-feature-такая-то при установке.
Это точно костыли.

&gt; 2. Для компьютеров без мониторов, можно переключиться на цель
&gt; setup-vnc.target и настроить компьютер через vnc.
В alterator-setup при установке пакета нужно научиться включать необходимую цель, если не нужен дефолт.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195688</commentid>
    <comment_count>7</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-01-25 11:16:46 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #6)
&gt; &gt; 2. Для компьютеров без мониторов, можно переключиться на цель
&gt; &gt; setup-vnc.target и настроить компьютер через vnc.
&gt; В alterator-setup при установке пакета нужно научиться включать необходимую
&gt; цель, если не нужен дефолт.

И как такое сделать? Конфиг парсить при установке пакета?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195689</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-01-25 11:26:56 +0300</bug_when>
    <thetext>&gt; И как такое сделать? Конфиг парсить при установке пакета?
Переменную окружения достаточно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195690</commentid>
    <comment_count>9</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-01-25 12:16:59 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #5)
&gt; Я думаю, что:
&gt; 1. не нужно при установке пакета подменять default.target

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

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

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

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

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

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

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

И с этой точки зрения я бы предложил просто доработать фичу в m-p и переключать там. Считаю очень правильным, что rootfs, требующий первоначальной настройки, существенно отличается от системы, куда просто поставили пакет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195691</commentid>
    <comment_count>10</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-01-25 12:53:17 +0300</bug_when>
    <thetext>(Ответ для Ivan A. Melnikov на комментарий #9)
&gt; (In reply to Антон Мидюков from comment #5)
&gt; &gt; Я думаю, что:
&gt; &gt; 1. не нужно при установке пакета подменять default.target
&gt; 
&gt; Тут согласен.
&gt; 
&gt; &gt; 2. незачем подменять default.target. Вместо этого стоит прописывать в
&gt; &gt; cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
&gt; &gt; installer-feature-такая-то при установке.
&gt; 
&gt; Не на всех странных железках мы можем легко управлять командной
&gt; строкой ядра. Нужен другой и/или дополнительный механизм.
&gt; 

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

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

Мешает то, что установка alterator-setup-x11vnc подменяет default.target на setup-vnс.target. Потому сейчас этот пакет не установлен в rootfs, которые загружают alterator-setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201211</commentid>
    <comment_count>11</comment_count>
    <who name="Олег Соловьев">mcpain</who>
    <bug_when>2021-08-04 12:31:08 +0300</bug_when>
    <thetext>юзштп

Ещё раз наступил на эти же грабли</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201613</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-16 13:38:10 +0300</bug_when>
    <thetext>(Ответ для Олег Соловьев на комментарий #11)
&gt; Ещё раз наступил на эти же грабли
Видимо, придётся сделать пакет, который будет подтирать задницу alterator-setup-у.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201652</commentid>
    <comment_count>13</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-16 16:43:16 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #12)
&gt; (Ответ для Олег Соловьев на комментарий #11)
&gt; &gt; Ещё раз наступил на эти же грабли
&gt; Видимо, придётся сделать пакет, который будет подтирать задницу
&gt; alterator-setup-у.

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

Так что думаю теперь с этим не заморачиваться и оставить, как есть, но унести создание default.target в mkimage-profiles и installer-feature-alterator-setup-stage2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201653</commentid>
    <comment_count>14</comment_count>
    <who name="Олег Соловьев">mcpain</who>
    <bug_when>2021-08-16 16:51:03 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #13)
&gt; Полгода назад я завис над тем, как сделать:
&gt; &quot;2. незачем подменять default.target. Вместо этого стоит прописывать в
&gt; cmdline загрузчика systemd.unit=setup.target при сборке rootfs или
&gt; installer-feature-такая-то при установке.&quot;
&gt; 
&gt; Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
&gt; унести создание default.target в mkimage-profiles и
&gt; installer-feature-alterator-setup-stage2.

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

Особенно, когда ты ставишь пакет, когда ты _знаешь_ его имя и негде посмотреть description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201655</commentid>
    <comment_count>15</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-16 17:00:17 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #13)
&gt; Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
&gt; унести создание default.target в mkimage-profiles и
&gt; installer-feature-alterator-setup-stage2.
Т.е. чистить default.target так никто и не будет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201660</commentid>
    <comment_count>16</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-16 17:09:53 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #15)
&gt; (Ответ для Антон Мидюков на комментарий #13)
&gt; &gt; Так что думаю теперь с этим не заморачиваться и оставить, как есть, но
&gt; &gt; унести создание default.target в mkimage-profiles и
&gt; &gt; installer-feature-alterator-setup-stage2.
&gt; Т.е. чистить default.target так никто и не будет?

Зачем чистить то, чего не будет?
Случайно default.target на alterator-setup.target указывать не будет.
А после успешного завершения alterator-setup всё подчищается и сейчас.
Т.е. предлагаю бороться не со следствием болезни, а с её причиной.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201666</commentid>
    <comment_count>17</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-16 17:51:19 +0300</bug_when>
    <thetext>alterator-setup обязан при удалении почистить за собой даже если его только что поставили.
Скажите прямо, он будет это делать или поискать другой пакет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201668</commentid>
    <comment_count>18</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-16 17:57:14 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #17)
&gt; alterator-setup обязан при удалении почистить за собой даже если его только
&gt; что поставили.
&gt; Скажите прямо, он будет это делать или поискать другой пакет?

За alterator-setup не нужно будет ничего подчищать:
[#282941] TESTED alterator-setup.git=0.3.10-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201669</commentid>
    <comment_count>19</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-16 18:01:03 +0300</bug_when>
    <thetext>1. За кем теперь нужно будет подчищать?
2. Кто это будет делать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201673</commentid>
    <comment_count>20</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-16 18:13:44 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #19)
&gt; 1. За кем теперь нужно будет подчищать?

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

&gt; 2. Кто это будет делать?

Успешно отработавший alterator-setup сам удаляет default.target и самого себя.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201682</commentid>
    <comment_count>21</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2021-08-16 19:34:41 +0300</bug_when>
    <thetext>alterator-setup-0.3.10-alt1 -&gt; sisyphus:

 Mon Aug 16 2021 Anton Midyukov &lt;antohami@altlinux&gt; 0.3.10-alt1
 - Not enable setup.target as default.target (Closes: 39546)
 - Add installer-feature-alterator-setup,
   installer-feature-alterator-setup-vnc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201693</commentid>
    <comment_count>22</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-17 10:26:55 +0300</bug_when>
    <thetext>Да. Так всё красиво получается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201735</commentid>
    <comment_count>23</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-17 16:46:15 +0300</bug_when>
    <thetext>&gt; добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup.
Т.е. у пользорвателя теперь нет возможности включить или выключить эту функциональность при установке системы?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201739</commentid>
    <comment_count>24</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-17 17:07:36 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #23)
&gt; &gt; добавлением в INSTALL2_PACKAGES installer-feature-alterator-setup.
&gt; Т.е. у пользователя теперь нет возможности включить или выключить эту
&gt; функциональность при установке системы?

При загрузке пользователь может написать параметр ядра systemd.unit=setup.target, чтобы при загрузке запустился alterator-setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201743</commentid>
    <comment_count>25</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-17 17:38:36 +0300</bug_when>
    <thetext>&gt; При загрузке пользователь может написать параметр ядра
Не может. Требуется это делать мышью выбирая опции при установке системы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201744</commentid>
    <comment_count>26</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-17 17:40:39 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #25)
&gt; &gt; При загрузке пользователь может написать параметр ядра
&gt; Не может. Требуется это делать мышью выбирая опции при установке системы.
Причём, это уже реализовано. Получается &quot;исправление&quot; ломает функциональность, на которую уже завязан конкретный дистрибутив, не предложив ничего взамен.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201745</commentid>
    <comment_count>27</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-08-17 17:47:26 +0300</bug_when>
    <thetext>(In reply to Sergey V Turchin from comment #26)
&gt; (Ответ для Sergey V Turchin на комментарий #25)
&gt; &gt; &gt; При загрузке пользователь может написать параметр ядра
&gt; &gt; Не может. Требуется это делать мышью выбирая опции при установке системы.
&gt; Причём, это уже реализовано. Получается &quot;исправление&quot; ломает
&gt; функциональность, на которую уже завязан конкретный дистрибутив, не
&gt; предложив ничего взамен.

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

Когда что-то делаете с боку, апстрим может в один прекрасный день Вам всё сломать. Я совершенно не против исправить alterator-setup так, чтобы Вам ничего не сломать или даже починить тот пакет, который сломал. Но мне нужно понимание того, что я сломал и как работало раньше то, что я сломал. Всё это нужно описать в новом баге.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201749</commentid>
    <comment_count>28</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-08-17 18:11:25 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #27)
&gt; Когда что-то делаете с боку
С какого ещё боку? Смена default.target это &quot;сбоку&quot;? Так, мелочь незаметная? ;-)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>