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

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

    <bug>
          <bug_id>30806</bug_id>
          
          <creation_ts>2015-03-04 23:44:23 +0300</creation_ts>
          <short_desc>[FR] ручка для регулировки поведения при раскрытии списков пакетов</short_desc>
          <delta_ts>2019-11-08 17:07:30 +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>mkimage</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://git.altlinux.org/people/boyarsh/packages/mkimage.git?p=mkimage.git;a=commitdiff;h=d18a6f5d73829a051976a8e88848af675333162b</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>antohami</cc>
    
    <cc>boyarsh</cc>
    
    <cc>cas</cc>
    
    <cc>glebfm</cc>
    
    <cc>klark.devel</cc>
    
    <cc>legion</cc>
    
    <cc>manowar</cc>
    
    <cc>mike</cc>
    
    <cc>rider</cc>
    
    <cc>sem</cc>
    
    <cc>vseleznv</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150586</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2015-03-04 23:44:23 +0300</bug_when>
    <thetext>Начиная с http://git.altlinux.org/gears/m/mkimage.git?p=mkimage.git;a=commitdiff;h=bfaa201fc7c7536d5f48dfb0c7bd7cbcaa2898f8 (входит в 0.0.6 и далее), mkimage умеет укладывать в субпрофиль конфликтующие пакеты; насколько помню, сделано было для возможности положить несколько MTA в RPMS.disk.

На типичных субпрофилях, где пакеты не копируются, а устанавливаются, такая смена поведения приводит к возможности конфликтов уже при установке; проще всего пронаблюдать подобное, когда используются и IMAGE_PACKAGES, и IMAGE_PACKAGES_REGEXP, причём в IMAGE_PACKAGES что-либо вытягивает виртуальную зависимость (и происходит разрешение её в конкретный вариант), а в IMAGE_PACKAGES_REGEXP задаётся другой вариант, предоставляющий ту же зависимость.

Эту багу давно следовало вынести из тудушки и сформулировать хотя бы так, на этот раз поймал bug 30805 и решил всё-таки зафиксировать.

Пока непонятно, как может выглядеть интерфейс, меняющий поведение.  Возможно, в нулевом приближении следует изменить tools/mki-image-pkgs и tools/mki-expand-pkgs таким образом, чтобы для copy резолвить по отдельности, для install -- одной транзакцией.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168869</commentid>
    <comment_count>1</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2018-02-07 23:57:29 +0300</bug_when>
    <thetext>Потенциальное решение: http://git.altlinux.org/people/manowar/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=d2f8dcc56c5c025e885940b5e9c0982db368033a . Правда, писалось чуть для другого.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168873</commentid>
    <comment_count>2</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2018-02-08 01:55:31 +0300</bug_when>
    <thetext>Точнее, уже http://git.altlinux.org/people/manowar/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=af945eec21304d4523018b1e3c0de6c1c07ad0d0 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168895</commentid>
    <comment_count>3</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2018-02-09 01:55:45 +0300</bug_when>
    <thetext>И снова: http://git.altlinux.org/people/manowar/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=326ff794049244150b346e260d21ac126bb17e1a .
(больше, наверное, не буду делать push --force)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169163</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-02-20 19:16:05 +0300</bug_when>
    <thetext>В случае regular-mate-20180214 напоролись на такую штуку:
среди переданных на сборку списков есть включающий mate-full
файл-список tagged/desktop+mate; mate-full R: mate-default,
который ранее требовал firefox, а недавно стал требовать
webclient; в итоге где-то мы слишком рано/изолированно
раскрыли список и получили rekonq вдобавок к позже приехавшему
в списке просто имён пакетов firefox.

Чтение mki-image-pkgs -&gt; mki-expand-pkgs -&gt; mki-sh-functions::mki_list_pkgs()
мне пока не дало ответа на то, где же такое могло произойти -- mki-expand-pkgs ведь не дёргает резолвер apt, а оперирует максимум кэшем, применяя регэксы самостоятельно.

2 legion: Лёш, не подскажешь, куда копать?
Маленький тестовый пример, наверное, могу изобразить.

2 manowar: спасибо; предсказуемый побочный эффект -- изменение настроек apt для формируемого корня (может быть существенно для ve/vm и устанавливаемых livecd).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169164</commentid>
    <comment_count>5</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-20 22:31:10 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; В случае regular-mate-20180214 напоролись на такую штуку:

Оказалось это фича apt&apos;а -- сносим всё и делаем по-новой:

# apt-get install xsane firefox
... будут установлены:
firefox rekonq xsane

Не, лучше не так, а эдак:

# apt-get install firefox xsane
... будут установлены:
firefox xsane

Т.е. от перемены мест слагаемых в образ может затянуться куча всего, ага. Решение с приоритетами, предложенное выше manowar@, дистрибутивно правильное, тем более, что файлик там патчится во временном APT-боксе, в образ это не приезжает (см. #3).

Можно ли и (стоит ли) делать подобное средствами mkimage? Можно, поправив алгоритм построения финального списка. Но суть останется, так что ничего лучше тут, наверное, не придумаешь.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169165</commentid>
    <comment_count>6</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-20 22:38:51 +0300</bug_when>
    <thetext>И ещё:

# echo &quot;  firefox&quot; &gt;&gt; /etc/apt/pkgpriorites
# apt-get install xsane firefox
... будут установлены:
firefox xsane

Теперь от места слагаемого, предоставляющего webclient, ничего не зависит!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169172</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2018-02-21 01:49:16 +0300</bug_when>
    <thetext>(В ответ на комментарий №4)
&gt; Чтение mki-image-pkgs -&gt; mki-expand-pkgs -&gt; mki-sh-functions::mki_list_pkgs()
&gt; мне пока не дало ответа на то, где же такое могло произойти -- mki-expand-pkgs
&gt; ведь не дёргает резолвер apt, а оперирует максимум кэшем, применяя регэксы
&gt; самостоятельно.
&gt; 
&gt; 2 legion: Лёш, не подскажешь, куда копать?
&gt; Маленький тестовый пример, наверное, могу изобразить.

Если буде тестовый пример (я смогу запустить его на varmor), то обязательно посмотрю. Я смогу сказать более предметно, когда пройму в чём проблема. Миш, ты можешь более подробно описать проблему ?

(В ответ на комментарий №6)
&gt; И ещё:
&gt; 
&gt; # echo &quot;  firefox&quot; &gt;&gt; /etc/apt/pkgpriorites
&gt; # apt-get install xsane firefox
&gt; ... будут установлены:
&gt; firefox xsane
&gt; 
&gt; Теперь от места слагаемого, предоставляющего webclient, ничего не зависит!

Я конечно не вник в проблему, но подход мне нравится на первый взгляд :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169173</commentid>
    <comment_count>8</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-21 03:10:01 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; (В ответ на комментарий №4)
&gt; Если буде тестовый пример (я смогу запустить его на varmor), то обязательно
&gt; посмотрю. Я смогу сказать более предметно, когда пройму в чём проблема.
&gt; 
&gt; (В ответ на комментарий №6)
&gt; Я конечно не вник в проблему, но подход мне нравится на первый взгляд :)

Написал более подробно в devel@:
https://lists.altlinux.org/pipermail/devel/2018-February/203947.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169175</commentid>
    <comment_count>9</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-21 03:26:06 +0300</bug_when>
    <thetext>Алексей, касательно правки mkimage. Считаю, что если никто не будет править apt, то обязательно надо поменять в mkimage везде, где идут &quot;|xargs -r&quot; при формировании окончательного списка пакетов на что-то типа &quot;|sort -u |xargs -r&quot;. И дальше начинать уворачиваться от шишек, которые полезут из m-p из-за РАЗОВОЙ смены очерёдности перечисления пакетов. Зато потом у нас таких проблем с порядком их следования больше возникать не будет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169176</commentid>
    <comment_count>10</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2018-02-21 08:59:08 +0300</bug_when>
    <thetext>Это кажется, что не будет возникать. А на самом деле всё у всех взорвётся.

На самом деле, конечно, можно попробовать сделать pkgpriorites частью профиля. В этом случае действительно проблемы можно будет обходить с помощью него.

Но ещё более правильную идею носит Глеб - отказаться от виртуальных пакетов.
Можно начать этот процесс.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169179</commentid>
    <comment_count>11</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-21 10:16:36 +0300</bug_when>
    <thetext>(В ответ на комментарий №10)
&gt; На самом деле, конечно, можно попробовать сделать pkgpriorites частью профиля.
&gt; В этом случае действительно проблемы можно будет обходить с помощью него.

Для этого предложенное manowar@ хорошо бы сделать чуть более радикальным: перед удалением APT-бокса, pkgpriorites из него нужно копировать в целевой чрут.

&gt; Это кажется, что не будет возникать. А на самом деле всё у всех взорвётся.

Добавление сортировки финального списка перед передачей его APT&apos;у предложено для решения совсем другой задачи и по случаю обнаруженной такой его особенности. sort -u улучшит предсказуемость (воспроизводимость) сборки куда более динамично меняющегося m-p.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169183</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2018-02-21 11:26:06 +0300</bug_when>
    <thetext>Я согласен с предложением Леонида. Сортированный список даст предсказуемость обработки списка пакетов. Кроме того, если это добавлять, то я добавлю переменную чтобы вернуть старое поведение и тогда особо сложные профили можно будет не менять, добавив его.

У нас уже есть GLOBAL_HSH_APT_CONFIG и HSH_APT_CONFIG, но я не помню покрывают ли случай, который нам нужен и достаточно ли их или нужно ещё что-то. Кажется его должно быть достаточно, чтобы на каждой стадии определить свой pkgpriorities и preferences (если нужно).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169187</commentid>
    <comment_count>13</comment_count>
    <who name="Leonid Krivoshein">klark.devel</who>
    <bug_when>2018-02-21 12:26:36 +0300</bug_when>
    <thetext>(In reply to comment #12)
&gt; У нас уже есть GLOBAL_HSH_APT_CONFIG и HSH_APT_CONFIG, но я не помню покрывают
&gt; ли случай, который нам нужен и достаточно ли их или нужно ещё что-то.

Я бы ещё обратил внимание на скрипт mkaptbox из пакета hasher (строки 246-290), где _создаётся_ APT-боксовый apt.conf. Возможно, воспроизводимость была потому, что мы традиционно в последние годы использовали одинаковый pkgpriorities. Но, если этот файл будет отличаться от машины к машине, такой воспроизводимости из-за виртуальных пакетов может не стать. Это тоже придётся учесть, добавив хотя бы в часть &quot;create initial apt.conf&quot; нечто &quot;стандартное&quot; из apt-conf-sisyphus. Хотя, возможно, для базовой системы это не критично, но для образов, собираемых mki, будет критично.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169795</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2018-03-21 19:10:02 +0300</bug_when>
    <thetext>Миш, ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169813</commentid>
    <comment_count>15</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-03-22 09:34:37 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; У нас уже есть GLOBAL_HSH_APT_CONFIG и HSH_APT_CONFIG, но я не помню покрывают
&gt; ли случай, который нам нужен и достаточно ли их или нужно ещё что-то. Кажется
&gt; его должно быть достаточноо
Да. Он же позволяет полностью изменить конфигурацию apt вплоть до RPM::Ignore в /etc/apt/apt.conf .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171283</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-05-24 17:47:59 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; И снова:
Спасибо, принял в mkimage-profiles 1.2.14 наконец.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174284</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2018-09-19 13:38:29 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; Я согласен с предложением Леонида. Сортированный список даст предсказуемость
&gt; обработки списка пакетов. Кроме того, если это добавлять, то я добавлю
&gt; переменную чтобы вернуть старое поведение и тогда особо сложные профили можно
&gt; будет не менять, добавив его.

Сортировка уже в релизе:

http://git.altlinux.org/gears/m/mkimage.git?p=mkimage.git;a=commitdiff;h=a8f0974e9d191970f714f75eb5ca9705f7c8f3d8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174285</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2018-09-19 13:39:20 +0300</bug_when>
    <thetext>Что ещё нужно в рамках этой баги ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177518</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-01-17 19:04:52 +0300</bug_when>
    <thetext>Думаю, на сейчас достаточно, а любое дальнейшее стоит описывать отдельно.
Спасибо всем причастным!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182412</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-14 13:30:44 +0300</bug_when>
    <thetext>--- tools/mki-copy-pkgs
- if ! conflicts=&quot;$(LANG=C fgrep &apos;: Conflicts: &apos; &quot;$errfile&quot;)&quot;; then
+ if ! conflicts=&quot;$(LANG=C egrep &apos;: (Conflicts|Depends): &apos; &quot;$errfile&quot;)&quot;; then
--- http://git.altlinux.org/people/boyarsh/packages/mkimage.git?p=mkimage.git;a=commitdiff;h=d18a6f5d73829a051976a8e88848af675333162b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185454</commentid>
    <comment_count>21</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2019-11-08 17:07:30 +0300</bug_when>
    <thetext>(В ответ на комментарий №18)
&gt; Что ещё нужно в рамках этой баги ?
Отключить сортировку по умолчанию.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>