[devel] Python Modules Policy: (was: alternatives && postfix)
Andrey Orlov
=?iso-8859-1?q?cray_=CE=C1_neural=2Eru?=
Пн Фев 16 12:10:14 MSK 2004
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 ---
----------------------------------------
----------- следующая часть -----------
%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 <python на packages.altlinux.org>
Provides: test-module
Requires: test%curver-core
%description
test
package.
%prep
%build
%install
%__mkdir_p $RPM_BUILD_ROOT
%files
----------- следующая часть -----------
%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 <python на packages.altlinux.org>
Provides: test-module
Requires: test%curver-core
%description
test
package.
%prep
%build
%install
%__mkdir_p $RPM_BUILD_ROOT
%files
----------- следующая часть -----------
%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 <python на packages.altlinux.org>
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
----------- следующая часть -----------
%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 <python на packages.altlinux.org>
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
Подробная информация о списке рассылки Devel