From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Andrey Orlov To: ALT Devel discussion list Subject: Re: [devel] Python Modules Policy: (was: alternatives && postfix) Date: Mon, 16 Feb 2004 12:10:14 +0300 User-Agent: KMail/1.5.4 References: <87znbsh12p.fsf@pc349.belcaf.minsk.by> <20040210101551.GO13525@pyro.hopawar.private.net> <200402161122.02014.cray@neural.ru> In-Reply-To: <200402161122.02014.cray@neural.ru> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_2jIMAOlCvRaiM7G" Message-Id: <200402161210.14350.cray@neural.ru> X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Feb 2004 09:09:08 -0000 Archived-At: List-Archive: List-Post: --Boundary-00=_2jIMAOlCvRaiM7G Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Content-Disposition: inline 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 --- ---------------------------------------- --Boundary-00=_2jIMAOlCvRaiM7G Content-Type: text/plain; charset="koi8-r"; name="test22-module.spec" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test22-module.spec" %define curver 22 %define prever 21 Version: 2.3.3 Release: alt5.99 Name: test%curver-module Summary: Stupid module License: PSF Group: Development/Python Url: http://www.python.org/ Packager: Python Development Team Provides: test-module Requires: test%curver-core %description test package. %prep %build %install %__mkdir_p $RPM_BUILD_ROOT %files --Boundary-00=_2jIMAOlCvRaiM7G Content-Type: text/plain; charset="koi8-r"; name="test23-module.spec" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test23-module.spec" %define curver 23 %define prever 22 Version: 2.3.3 Release: alt5.99 Name: test%curver-module Summary: Stupid module License: PSF Group: Development/Python Url: http://www.python.org/ Packager: Python Development Team Provides: test-module Requires: test%curver-core %description test package. %prep %build %install %__mkdir_p $RPM_BUILD_ROOT %files --Boundary-00=_2jIMAOlCvRaiM7G Content-Type: text/plain; charset="koi8-r"; name="test23.spec" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test23.spec" %define curver 23 %define prever 22 Version: 2.3.3 Release: alt5.991 Name: test%curver Summary: An interpreted, interactive object-oriented programming language License: PSF Group: Development/Python Url: http://www.python.org/ Packager: Python Development Team Provides: test Requires: test%curver-core %description test package. %package weak Summary: Python with weak conflicts: using with python22 are allowed Group: Development/Python Provides: test%curver-core Conflicts: test%curver-strict Requires: test%curver-base %description weak %package strict Summary: Python with weak conflicts: using with python22 are allowed Group: Development/Python Provides: test%curver-core Conflicts: test%curver-weak Requires: test%curver-base #Obsoletes: test%prever-core Conflicts: test%prever-core #Obsoletes: test%prever-strict #Obsoletes: test%prever-weak %description strict %package base Summary: Base python modules and executables Group: Development/Python Requires: test%curver-core %description base %prep %build %install %__mkdir_p $RPM_BUILD_ROOT %files %files weak %files strict %files base --Boundary-00=_2jIMAOlCvRaiM7G Content-Type: text/plain; charset="koi8-r"; name="test22.spec" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test22.spec" %define curver 22 %define prever 21 Version: 2.3.3 Release: alt5.991 Name: test%curver Summary: An interpreted, interactive object-oriented programming language License: PSF Group: Development/Python Url: http://www.python.org/ Packager: Python Development Team Provides: test Requires: test%curver-core %description test package. %package weak Summary: Python with weak conflicts: using with python22 are allowed Group: Development/Python Provides: test%curver-core Conflicts: test%curver-strict Requires: test%curver-base %description weak %package strict Summary: Python with weak conflicts: using with python22 are allowed Group: Development/Python Provides: test%curver-core Conflicts: test%curver-weak Requires: test%curver-base #Obsoletes: test%prever-core Conflicts: test%prever-core #Obsoletes: test%prever-strict #Obsoletes: test%prever-weak %description strict %package base Summary: Base python modules and executables Group: Development/Python Requires: test%curver-core %description base %prep %build %install %__mkdir_p $RPM_BUILD_ROOT %files %files weak %files strict %files base --Boundary-00=_2jIMAOlCvRaiM7G--