On Monday 16 February 2004 11:46, Andrey Orlov wrote: > что с Obsoletes / Conflicts разобрался только-только. Я поставил Conflicts. > Причины и подробное описание будут в отдельном письме, тестовый пакет > в дедалусе будет сегодня или завтра. Введение : В существующем варианте системы зависимостей на пакетах python и модулей к ним, существует проблема, состоящая в несостоятельности системы ограничений, например: Zope требует python23 Zope требует MySQLdb MySQLdb требует python22 Приведет к установке Zope, python23, MySQLdb & python22, что окажется нераобтоспособным. Возможное решение состоит в внесении дополнительного ограничения на совместную установку python23 & python22, что может быть не очень удобно для некоторых пользователей, готовых "рискнуть". Предлагаемое решение : Спеки для мистического пакета test & test-module лежат в атаче, чбы пример заработал, в /etc/apt/pkgpriorities нужно добавить строчки test23, test23-strict, test22-weak (Кстати, к кому обращатся по поводу их внесения на постоянной основе для пакетов python?). Чбы проиллюстрировать работу, просто приведу несколько команд: 1. Установка старой версии : apt-get install test22 2.1 Обновление ее до новой версии (старая версия будет снесена): apt-get install test23 2.2 Установка новой версии с сохранением старой (для тех кому надо): apt-get install test23-weak 2.2.1 Удаление старой версии apt-get install test23-strict Обычные пользователи проводят систему через стадии 1, 2.1; Разработчики, которым некоторое время могут быть реально нужны обе версии python, проводят систему через стадии 1, 2.2, 2.2.1, понимая при этом, что на стадии 2.2 система может оказаться не юзабельной. Преимущества и недостатки решения : Раз уж оба пакета можно поставить, то умный apt должен бы находить решение (недопустимое) в системе ограничений, описанной в "введении", Правда, в моих опытах apt решение не находит, но я не знаю как к этому относится: не полному пониманию смысла ограничений мной, или ошибкой в apt. Если кто-то себя считает авторитетом в apt (LDV?) и ему это интересно - можно обсудить приватно. Если apt начнет находить решение, то стоит отказаться от пакетов *weak или вынести их в отдельный репозиторий, сделав ограничение строгим. В тоже время, по крайней мере "обычные" варианты апгрейда системы будут приводить к обязательному сносу старой версии python. Т.о. это работает. Если кто-то обратил внимание, в спеках прописано ограничение вида "Conflicts", а не "Obsoletes", из комментариев видно, что "Obsoletes" я тоже пробовал. Мне показалось (частью потому, как это работает, частью после чтения ченджлогов и исходников на rpm), что фича rpm Obsoletes в паре с apt преимуществ не имеет, возможно в силу того, что apt о ее отличиях от Conflicts просто не знает. Мне проще использовать Conflicts, так как Obsoletes на виртуальные пакеты не действует, но в принципе с Obsoletes (см. комментарии) тоже работает. Есть упрощенный вариант, в котором нет пакета test23-strict, а его функции берет на себя пакет test23, этот вариант тоже работает. Правда, наличие в заголовке конфликта на самого себя выглядит неким хаком и внушает горячкее желание поближе ознакомится с обработкой зависимостей в apt/rpm. В принципе, если я проблем не найду, то именно второй вариант останетя для python. -- WthBstRgrds -- Андрей Орлов -- --- http: www.neural.ru, mail: cray@neural.ru, jid: cray@altlinux.org --- ----------------------------------------