[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