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

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

    <bug>
          <bug_id>17674</bug_id>
          
          <creation_ts>2008-10-24 20:36:06 +0400</creation_ts>
          <short_desc>kill Sisyphus noarch repo [was: java-1.6.0-sun is not installable]</short_desc>
          <delta_ts>2009-09-20 16:58:40 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>apt-utils</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>17657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="viy">viy</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>at</cc>
    
    <cc>avm</cc>
    
    <cc>inger</cc>
    
    <cc>ldv</cc>
    
    <cc>led</cc>
    
    <cc>mike</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80193</commentid>
    <comment_count>0</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-24 20:36:06 +0400</bug_when>
    <thetext>Народ (#17657) возмущается, что
java-1.6.0-sun стал вытягивать fonts-ttf-java-1.5.0-sun:
The following packages will be upgraded
  fonts-ttf-java-1.6.0-sun java-1.6.0-sun java-1.6.0-sun-devel
The following NEW packages will be installed:
  fonts-ttf-java-1.5.0-sun.

И я знаю, что причиной --
в fonts-ttf-java-1.6.0-sun я добавил BuildArch: noarch,
в результате fonts-ttf-java-1.6.0-sun стал noarch,
а fonts-ttf-java-1.5.0-sun остался arch.

Таким образом, по-видимому, apt расклинило на границе
arch/noarch и он стал выдавать некорректный, вообще говоря,
результат.

Почему некорректный? Потому что java-1.6.0-sun = 1.6.0.10-alt1
требует fonts-ttf-j2se-sun &gt;= 1.6.0.10-alt1.

fonts-ttf-java-1.6.0-sun провайдит fonts-ttf-j2se-sun &gt;= 1.6.0.10-alt1.
он подходит.
fonts-ttf-java-1.5.0-sun провайдит fonts-ttf-j2se-sun &gt;= 1.5.0.16-alt1.
он не подходит, но вытягивается тем не менее.

при этом в fonts-ttf-java-1.6.0-sun
есть непрямые Obsoletes на fonts-ttf-java-1.5.0-sun.
$ rpmquery --obsoletes fonts-ttf-java-1.6.0-sun
...
fonts-ttf-j2se-sun &lt; 1.6.0.10-alt1
java-1.5.0-fonts

Т.е. fonts-ttf-java-1.5.0-sun провайдит
и java-1.5.0-fonts, и fonts-ttf-j2se-sun = 1.5.х,
и по хорошему должен был бы обсолетиться.

Он и обсолетился, эта вся механика работала
до BuildArch: noarch в fonts-ttf-java-1.6.0-sun
:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80206</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-10-25 01:54:11 +0400</bug_when>
    <thetext>Игорь, я очень надеюсь, что в следующий раз, прежде чем отправлять бомбу в Сизиф,
вы её испытаете у себя.

Вот что вы сделали:
$ hsh-install java-1.6.0-sun
file /usr/share/fonts/ttf/j2se-sun/LucidaTypewriterRegular.ttf conflicts between attempted installs of fonts-ttf-java-1.6.0-sun-1.6.0.10-alt1 and fonts-ttf-java-1.5.0-sun-1.5.0.16-alt1
hsh-install: Packages installation failed.

В чём причина проблемы?  В зависимостях:
$ rpmquery -pR java-1.6.0-sun-1.6.0.10-alt1.x86_64.rpm |fgrep fonts
fonts-ttf-j2se-sun &gt;= 1.6.0.10-alt1
/usr/share/fonts/ttf/j2se-sun  
/usr/share/fonts/ttf/j2se-sun-oblique  

С первой всё в порядке:
$ aptbox/apt-get -q install -y --print-uris &apos;fonts-ttf-j2se-sun&gt;=1.6.0.10-alt1&apos;
Чтение списков пакетов...
Построение дерева зависимостей...
Selected version fonts-ttf-java-1.6.0-sun#0:1.6.0.10-alt1 for fonts-ttf-j2se-sun&gt;=1.6.0.10-alt1
Следующие дополнительные пакеты будут установлены:
  fontconfig fonts-ttf-java-1.6.0-sun libexpat libfreetype
Следующие НОВЫЕ пакеты будут установлены:
  fontconfig fonts-ttf-java-1.6.0-sun libexpat libfreetype
0 будет обновлено, 4 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.

А вот что со второй:
$ aptbox/apt-get -q install -y --print-uris /usr/share/fonts/ttf/j2se-sun
Чтение списков пакетов...
Построение дерева зависимостей...
Выбрано fonts-ttf-java-1.5.0-sun для &apos;/usr/share/fonts/ttf/j2se-sun&apos;
Следующие дополнительные пакеты будут установлены:
  fontconfig fonts-ttf-java-1.5.0-sun libexpat libfreetype
Следующие НОВЫЕ пакеты будут установлены:
  fontconfig fonts-ttf-java-1.5.0-sun libexpat libfreetype
0 будет обновлено, 4 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.

В результате все java-пакеты в Сизифе отправлены под откос.

Источник файловых зависимостей очевиден:
$ rpmquery -lvp java-1.6.0-sun-1.6.0.10-alt1.x86_64.rpm |fgrep fonts
lrwxrwxrwx    1 root    root               39 Окт 23 03:36 /usr/lib/jvm/java-1.6.0-sun-1.6.0.10/jre/lib/fonts -&gt; ../../../../../share/fonts/ttf/j2se-sun
lrwxrwxrwx    1 root    root               47 Окт 23 03:36 /usr/lib/jvm/java-1.6.0-sun-1.6.0.10/jre/lib/oblique-fonts -&gt; ../../../../../share/fonts/ttf/j2se-sun-oblique

Для справки:
$ grep &apos;^/usr/share/fonts/ttf/j2se-sun[[:space:]]&apos; Sisyphus/*/base/contents_index 
Sisyphus/i586/base/contents_index:/usr/share/fonts/ttf/j2se-sun    /usr/share/fonts/ttf/j2se-sun
Sisyphus/noarch/base/contents_index:/usr/share/fonts/ttf/j2se-sun  fonts-ttf-java-1.6.0-sun
Sisyphus/x86_64/base/contents_index:/usr/share/fonts/ttf/j2se-sun  fonts-ttf-java-1.5.0-sun
$ grep &apos;^/usr/share/fonts/ttf/j2se-sun-oblique[[:space:]]&apos; Sisyphus/*/base/contents_index 
Sisyphus/i586/base/contents_index:/usr/share/fonts/ttf/j2se-sun-oblique    fonts-ttf-java-1.5.0-sun
Sisyphus/noarch/base/contents_index:/usr/share/fonts/ttf/j2se-sun-oblique  fonts-ttf-java-1.6.0-sun
Sisyphus/x86_64/base/contents_index:/usr/share/fonts/ttf/j2se-sun-oblique  fonts-ttf-java-1.5.0-sun

Мораль: как бы не работал apt, нельзя отправлять в Сизиф такие битые пакеты.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80213</commentid>
    <comment_count>2</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-25 12:09:12 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt; Игорь, я очень надеюсь, что в следующий раз, прежде чем отправлять бомбу в
&gt; Сизиф, вы её испытаете у себя.

Напомню, с точки зрения rpm пакеты корректны.
Т.е. у меня собранный пакет молча установится через rpm -Uvh,
я просто физически не смогу увидеть проблему.

Более того, с точки зрения apt эти пакеты корректны, 
пока не пересекают границу репозитария.
Напомню, что java-1.6.0-sun = 1.6.0.07-altxx
имел в точности такую же стркутуру зависимостей,
но его fonts-ttf-java-1.6.0-sun не пересекал границ репозитариев
и ставился на ура.

Поэтому, если я воспользуюсь hsh-install для дополнительной проверки, 
(у меня локально) проблем не будет, так как 
все пакеты будут лежать в одном репозитории RPMS.hasher
и опять же не пересекут границ репозитария.

&gt; Мораль: как бы не работал apt, нельзя отправлять в Сизиф такие битые пакеты.
Это неверная мораль. Хочу подчеркнуть, что 

1) вообще говоря, пакеты не битые, так как проблема с apt возникает, 
только если пакеты разложить по репозиториям специальным образом

2) У меня локально нет возможности выявить эту проблему.
IMHO, единственный способ ее заметить - выложить пакеты в Сизиф :)

Если знаете другой способ, делитесь, это должен быть нетривиальный трюк,
который стоит озвучить в devel@ и записать на wiki.
может быть даже оформить в виде скрипта в rpm-utils.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80214</commentid>
    <comment_count>3</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-25 12:15:02 +0400</bug_when>
    <thetext>&gt; $ aptbox/apt-get -q install -y --print-uris /usr/share/fonts/ttf/j2se-sun
&gt; Чтение списков пакетов...
&gt; Построение дерева зависимостей...
&gt; Выбрано fonts-ttf-java-1.5.0-sun для &apos;/usr/share/fonts/ttf/j2se-sun&apos;
я понимаю, и писал об этом.
fonts-ttf-java-1.6.0-sun переехал в noarch, 
fonts-ttf-java-1.5.0-sun остался в аrch.

файловая зависимость объясняет, почему fonts-ttf-java-1.5.0-sun вытянулся 
(считая, что особенность apt, связанная с тем, что файловые зависимости разрешаются только внутри репозитария, неизлечима.
Хотя с другой стороны, это как раз повод лечить: 
Это как раз типичная проблема, порождденная поддержкой 
подпакетов с BuildArch: noarch)

но не обьясняет, почему не сработали Obsoletes: из fonts-ttf-java-1.6.0-sun:
$ rpmquery --obsoletes fonts-ttf-java-1.6.0-sun
...
fonts-ttf-j2se-sun &lt; 1.6.0.10-alt1
java-1.5.0-fonts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80224</commentid>
    <comment_count>4</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-26 00:49:28 +0400</bug_when>
    <thetext>я java перезалил (alt2.1)
в сухом остатке проблема apt.
опять вешаю на apt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80225</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-10-26 00:55:27 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; файловая зависимость объясняет, почему fonts-ttf-java-1.5.0-sun вытянулся 
&gt; (считая, что особенность apt, связанная с тем, что файловые зависимости
&gt; разрешаются только внутри репозитария, неизлечима.

Причина в другом:
$ aptbox/apt-cache showpkg /usr/share/fonts/ttf/j2se-sun-oblique
Package: /usr/share/fonts/ttf/j2se-sun-oblique
Versions: 

Reverse Depends: 
  java-1.6.0-sun,/usr/share/fonts/ttf/j2se-sun-oblique
  java-1.5.0-sun,/usr/share/fonts/ttf/j2se-sun-oblique
Dependencies: 
Provides: 
Reverse Provides: 
fonts-ttf-java-1.5.0-sun 0:1.5.0.16-alt1

Поскольку в списке provides присутствует только fonts-ttf-java-1.5.0-sun,
ничего удивительного в том, что происходит попытка его установки, нет.

&gt; почему не сработали Obsoletes: из fonts-ttf-java-1.6.0-sun:
&gt; $ rpmquery --obsoletes fonts-ttf-java-1.6.0-sun
&gt; ...
&gt; fonts-ttf-j2se-sun &lt; 1.6.0.10-alt1

Obsoletes действует только на невиртуальные пакеты.

(In reply to comment #4)
&gt; я java перезалил (alt2.1)

Ещё нет (файл ещё не закачан).  И зачем?

&gt; в сухом остатке проблема apt.

Какая?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80226</commentid>
    <comment_count>6</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-26 01:09:28 +0400</bug_when>
    <thetext>&gt; fonts-ttf-java-1.5.0-sun 0:1.5.0.16-alt1
&gt; Поскольку в списке provides присутствует только fonts-ttf-java-1.5.0-sun,
&gt; ничего удивительного в том, что происходит попытка его установки, нет.

java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique,
но apt не использует этого --- 
у нас искусственное разделение метаданных на arch/noarch, в то время как использование BuildArch: ноарч позволяет создавать пакеты,
которые идут и в arch, и в noarch.

И это стоит только поощрять, так как Сизиф похудеет на пару гб.
Но тогда надо что-то делать с этим расщеплением метаданных.

&gt; Obsoletes действует только на невиртуальные пакеты.
Понял. 

&gt; &gt; я java перезалил (alt2.1)
&gt; Ещё нет (файл ещё не закачан).  И зачем?
Явные Obsoletes добавлены.

&gt; Какая?
см. выше.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80227</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-10-26 01:19:34 +0400</bug_when>
    <thetext>(In reply to comment #6)
&gt; java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique,
&gt; но apt не использует этого --- 

Нет, apt использует всё, что есть в индексах.
А в индексах есть только это:

Reverse Provides: 
fonts-ttf-java-1.5.0-sun 0:1.5.0.16-alt1

Вопрос: почему в Reverse Provides нет fonts-ttf-java-1.6.0-sun?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80228</commentid>
    <comment_count>8</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-26 01:26:31 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Вопрос: почему в Reverse Provides нет fonts-ttf-java-1.6.0-sun?

напомню, раньше fonts-ttf-java-1.6.0-sun был arch пакетом и все было ок -
он находился и ставился.
как только он стал noarch (c помощью BuildArch: noarch)
apt перестал его находить в Reverse Provides.

IMHO, сейчас поиск файловых зависисимостей в apt 
не выходит за пределы arch репозитария, в этом,
как мне кажется, и проблема.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80237</commentid>
    <comment_count>9</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-26 13:00:48 +0300</bug_when>
    <thetext>VIY&gt; &gt; почему не сработали Obsoletes: из fonts-ttf-java-1.6.0-sun:
LDV&gt; Obsoletes действует только на невиртуальные пакеты.

Но явные Obsoletes: тоже не сработали: см.
https://bugzilla.altlinux.org/show_bug.cgi?id=17657#c6
https://bugzilla.altlinux.org/show_bug.cgi?id=17657#c7

Напомню, я могу убрать BuildArch: noarch в fonts-ttf-java-1.6.0-sun,
и все будет ok.
Но это плохое решение, надо за BuildArch: noarch побороться.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80238</commentid>
    <comment_count>10</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-26 13:09:49 +0300</bug_when>
    <thetext>Как я понимаю, решать проблему нужно радикально:
оставить разбивку x86_64 noarch i586 в files,
но на уровне симлинков оставить только
i586/RPMS.classic
и x86_64/RPMS.classic
noarch/RPMS.classic оставить, пустым, для совместимости.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80252</commentid>
    <comment_count>11</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-10-26 20:26:57 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique,
&gt; &gt; но apt не использует этого --- 
&gt; 
&gt; Нет, apt использует всё, что есть в индексах.
&gt; А в индексах есть только это:
&gt; 
&gt; Reverse Provides: 
&gt; fonts-ttf-java-1.5.0-sun 0:1.5.0.16-alt1
&gt; 
&gt; Вопрос: почему в Reverse Provides нет fonts-ttf-java-1.6.0-sun?

Будем считать, что это особенность работы genbasedir.
Возможно, Алексей Турбин знает про это больше.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80475</commentid>
    <comment_count>12</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-10-30 13:36:07 +0300</bug_when>
    <thetext>summary is changed to 
kill Sisyphus noarch repo 
[was: java-1.6.0-sun is not installable]
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99536</commentid>
    <comment_count>13</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-09-20 02:42:10 +0400</bug_when>
    <thetext>Неактуально?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99579</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-09-20 16:21:00 +0400</bug_when>
    <thetext>2 led: не сталкивался с таким?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99582</commentid>
    <comment_count>15</comment_count>
    <who name="viy">viy</who>
    <bug_when>2009-09-20 16:25:33 +0400</bug_when>
    <thetext>(В ответ на комментарий №13)
&gt; Неактуально?

Как я понимаю, проблема сама по себе не решена и существует,
грабли ждут следующую жертву.

Поэтому если вопрос актуально ли для меня - то не актуально,
я тропинки в обход протоптал.
Если же для сизифа - то, как я понимаю, актуально.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99584</commentid>
    <comment_count>16</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-09-20 16:44:45 +0400</bug_when>
    <thetext>(In reply to comment #15)
&gt; (В ответ на комментарий №13)
&gt; &gt; Неактуально?
&gt; 
&gt; Как я понимаю, проблема сама по себе не решена и существует,

С тех пор genbasedir и hasher изменились в этой области.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99587</commentid>
    <comment_count>17</comment_count>
    <who name="viy">viy</who>
    <bug_when>2009-09-20 16:58:40 +0400</bug_when>
    <thetext>(В ответ на комментарий №16)
&gt; (In reply to comment #15)
&gt; &gt; (В ответ на комментарий №13)
&gt; &gt; &gt; Неактуально?
&gt; &gt; 
&gt; &gt; Как я понимаю, проблема сама по себе не решена и существует,
&gt; 
&gt; С тех пор genbasedir и hasher изменились в этой области.

Лень тестовый пакет собирать :) закрывайте, будем ждать следующую жертву :)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>