Summary: | kill Sisyphus noarch repo [was: java-1.6.0-sun is not installable] | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | viy <viy> |
Component: | apt-utils | Assignee: | Dmitry V. Levin <ldv> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | at, avm, inger, ldv, led, mike |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 17657 |
Description
viy
2008-10-24 20:36:06 MSD
Игорь, я очень надеюсь, что в следующий раз, прежде чем отправлять бомбу в Сизиф, вы её испытаете у себя. Вот что вы сделали: $ 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 >= 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 'fonts-ttf-j2se-sun>=1.6.0.10-alt1' Чтение списков пакетов... Построение дерева зависимостей... Selected version fonts-ttf-java-1.6.0-sun#0:1.6.0.10-alt1 for fonts-ttf-j2se-sun>=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 для '/usr/share/fonts/ttf/j2se-sun' Следующие дополнительные пакеты будут установлены: 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 -> ../../../../../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 -> ../../../../../share/fonts/ttf/j2se-sun-oblique Для справки: $ grep '^/usr/share/fonts/ttf/j2se-sun[[:space:]]' 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 '^/usr/share/fonts/ttf/j2se-sun-oblique[[:space:]]' 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, нельзя отправлять в Сизиф такие битые пакеты. (In reply to comment #1) > Игорь, я очень надеюсь, что в следующий раз, прежде чем отправлять бомбу в > Сизиф, вы её испытаете у себя. Напомню, с точки зрения 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 и опять же не пересекут границ репозитария. > Мораль: как бы не работал apt, нельзя отправлять в Сизиф такие битые пакеты. Это неверная мораль. Хочу подчеркнуть, что 1) вообще говоря, пакеты не битые, так как проблема с apt возникает, только если пакеты разложить по репозиториям специальным образом 2) У меня локально нет возможности выявить эту проблему. IMHO, единственный способ ее заметить - выложить пакеты в Сизиф :) Если знаете другой способ, делитесь, это должен быть нетривиальный трюк, который стоит озвучить в devel@ и записать на wiki. может быть даже оформить в виде скрипта в rpm-utils. > $ aptbox/apt-get -q install -y --print-uris /usr/share/fonts/ttf/j2se-sun
> Чтение списков пакетов...
> Построение дерева зависимостей...
> Выбрано fonts-ttf-java-1.5.0-sun для '/usr/share/fonts/ttf/j2se-sun'
я понимаю, и писал об этом.
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 < 1.6.0.10-alt1
java-1.5.0-fonts
я java перезалил (alt2.1) в сухом остатке проблема apt. опять вешаю на apt. (In reply to comment #3) > файловая зависимость объясняет, почему fonts-ttf-java-1.5.0-sun вытянулся > (считая, что особенность apt, связанная с тем, что файловые зависимости > разрешаются только внутри репозитария, неизлечима. Причина в другом: $ 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, ничего удивительного в том, что происходит попытка его установки, нет. > почему не сработали Obsoletes: из fonts-ttf-java-1.6.0-sun: > $ rpmquery --obsoletes fonts-ttf-java-1.6.0-sun > ... > fonts-ttf-j2se-sun < 1.6.0.10-alt1 Obsoletes действует только на невиртуальные пакеты. (In reply to comment #4) > я java перезалил (alt2.1) Ещё нет (файл ещё не закачан). И зачем? > в сухом остатке проблема apt. Какая? > fonts-ttf-java-1.5.0-sun 0:1.5.0.16-alt1 > Поскольку в списке provides присутствует только fonts-ttf-java-1.5.0-sun, > ничего удивительного в том, что происходит попытка его установки, нет. java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique, но apt не использует этого --- у нас искусственное разделение метаданных на arch/noarch, в то время как использование BuildArch: ноарч позволяет создавать пакеты, которые идут и в arch, и в noarch. И это стоит только поощрять, так как Сизиф похудеет на пару гб. Но тогда надо что-то делать с этим расщеплением метаданных. > Obsoletes действует только на невиртуальные пакеты. Понял. > > я java перезалил (alt2.1) > Ещё нет (файл ещё не закачан). И зачем? Явные Obsoletes добавлены. > Какая? см. выше. (In reply to comment #6) > java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique, > но 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? (In reply to comment #7) > Вопрос: почему в 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 репозитария, в этом, как мне кажется, и проблема. VIY> > почему не сработали Obsoletes: из fonts-ttf-java-1.6.0-sun: LDV> 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 побороться. Как я понимаю, решать проблему нужно радикально: оставить разбивку x86_64 noarch i586 в files, но на уровне симлинков оставить только i586/RPMS.classic и x86_64/RPMS.classic noarch/RPMS.classic оставить, пустым, для совместимости. (In reply to comment #7) > (In reply to comment #6) > > java-1.6.0-sun тоже провайдит /usr/share/fonts/ttf/j2se-sun-oblique, > > но 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? Будем считать, что это особенность работы genbasedir. Возможно, Алексей Турбин знает про это больше. summary is changed to kill Sisyphus noarch repo [was: java-1.6.0-sun is not installable] Неактуально? 2 led: не сталкивался с таким? (В ответ на комментарий №13) > Неактуально? Как я понимаю, проблема сама по себе не решена и существует, грабли ждут следующую жертву. Поэтому если вопрос актуально ли для меня - то не актуально, я тропинки в обход протоптал. Если же для сизифа - то, как я понимаю, актуально. (In reply to comment #15) > (В ответ на комментарий №13) > > Неактуально? > > Как я понимаю, проблема сама по себе не решена и существует, С тех пор genbasedir и hasher изменились в этой области. (В ответ на комментарий №16) > (In reply to comment #15) > > (В ответ на комментарий №13) > > > Неактуально? > > > > Как я понимаю, проблема сама по себе не решена и существует, > > С тех пор genbasedir и hasher изменились в этой области. Лень тестовый пакет собирать :) закрывайте, будем ждать следующую жертву :) |