ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Aleksey Avdeev <solo@solin.spb.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] Переходное полиси для для питона
Date: Sun, 28 Oct 2007 15:36:00 +0300
Message-ID: <47248230.1030004@solin.spb.ru> (raw)
In-Reply-To: <20071028121137.GA19325@solemn.turbinal>

[-- Attachment #1: Type: text/plain, Size: 6506 bytes --]

Alexey Tourbin пишет:
> On Sun, Oct 28, 2007 at 07:10:14AM +0300, Aleksey Avdeev wrote:
> 
>>>ПОЧЕМУ: сейчас дефолтный питон /usr/bin/python версии 2.4 и зависимости
>>>у пакетов имеют вид python2.4(...).  Если обновить дефолтный
>>>/usr/bin/python на 2.5, то зависимости у всех остальных пакетов никуда
>>>не денутся, они останутся python2.4(...).  Теперь подумайте, что
>>>получается, когда питон обновился, а скрипт, запускаемый через
>>>/usr/bin/python имеет зависимости на питон 2.4, а на самом деле в
>>>системе стоит питон 2.5.  Например, этот скрипт для работы требует
>>>что-то типа python2.4(gtk).  Но при запуске через новый /usr/bin/python
>>>эта зависимость как бы динамически трансформируется на python2.5(gtk).
>>>То есть зависимость может быть формально удовлетворена, но получается
>>>пшик, скрипт не запускается потому что уже нужен gtk'шный модуль для
>>>2.5, а не для 2.4.
>>
>>  Так может достаточно отделить мух от котлет? Например так:
>>
>>1. В системе есть /usr/bin/pythonX.Y. И их может быть несколько.
>>
>>2. В системе есть /usr/bin/python, как указатель на некоторый
>>/usr/bin/pythonX.Y. И данная ссылка может предоставляться несколькими
>>_взаимоконфликтующими_ пакетами.
> 
> 
> Подобную схему изобретал Андрей Оролов.

  И достаточно весомо аргументировал её право на жизнь. (Более того --
мне пришлось столкнуться с её плюсами.)

> 
> 
>>3. При сборке пакета со скриптами использующими /usr/bin/python --
>>добавляем в их зависимость на пакет предоставляющий /usr/bin/python в
>>сборочной среде. В идеале, здесь желательно иметь ручку, отключающую
>>данное поведение: её можно использовать для получения пакетов работающих
>>с неким диапазоном версий питонов -- возможность поставить конфликты на
>>те версии с которыми скрипт не работает у мантейнера останется.
>>
>>  Тогда мы имеем с гуся следующее:
>>
>>1. Пакеты со скриптами использующими /usr/bin/pythonX.Y напрямую --
>>спокойно продолжают это делать, независимо от версии /usr/bin/python
>>установленной в системе.
>>
>>2. Если в пакете используется /usr/bin/python -- при установке будет
>>попытка вытянуть нужную версию (ту, с которой пакет был собран). Если
>>это приведёт к конфликтам -- ставящий будет вынужден разрешить их в
>>ручную (и это правильно).
> 
> 
> *)
> 
> 
>>3. Пакет которому необходим старый питон -- для не конфликтности с новым
>>достаточно просто пропатчить.
>>
>>4. Возможно плавное замещение питона в дистрибутиве. (Но не на
>>конкретной системе! Там, в прочем, возможен выбор _момента_ перехода.)
> 
> 
> Невозможно, в силу *).  Просто часть пакетов будет ставиться только
> со старым питоном, часть -- только с новым.   Часть пакетов вообще не
> будет ставиться, потому что будет попытка поставить два питона.

  По моему это уже не технический аспект, а организационный: достаточно
_явно_ указать в полиси что отсутствие пакета под текущий питон
переводит его в статус, равнозначный его отсутствию (с некоторыми
ограничениями, возможно).

> 
> 
>>>Я делаю системное решение.  То есть я исхожу из того, что все пакеты
>>>В РЕПОЗИТАРИИ должны будут работать/починиться под новый питон.
>>>Что там запускается из /home/user мне не особо интересно.  Если там есть
>>>что-то важное, то нужно это опакетить, и тогда придётся учитывать этот
>>>пакет в плане миграции на питон 2.5.
>>
>>  Этот вариант идеален, но я не чую его жизнеспособности в условиях
>>ограниченности ресурсов. :-/
>>
>>  При вашем варианте имеем следующие грабли:
>>
>>1. Задержка на попадание нового питона в Сизиф, пока не будет
>>оттестировано всё, что будет сочтено "ядром питона"
> 
> 
> Думаю, что достаточно чтобы оно пересобралось с новым питоном.
> Я не знаю, есть ли в питоновских пакетах привычка писать что-нибудь
> вроде 'make test'.  Это могло бы сделать первичное тестирование
> существенно более предсказуемым.

  Теоретически -- да, это то к чему надо стремиться. Но случаи
прикладной некромантии тоже существенны.

> 
> 
>>2. При появлении нового питона в Сизифе -- часть приложений (что в
>>"ядром питона" не вошла) "неожиданно" перестанет работать.
> 
> 
> Они и так перестают работать.  Достаточно пересобрать какой-нибудь
> "средний" по топологии зависимостей питоновский модуль и вся иерархия
> пакетов рассыпается -- возникает диверсия, при которой часть пакетов
> относятся к старому питону, а часть -- уже к новому.

  Если это произошло после отмашки "текущий питон X.Y" -- то не вижу
проблемы: в любом случаи не вижу способа избежать частичной
разломанности репозитария.

  Возможно неплохим вариантом будет полиси аналогичное описывающему
смену сонаме для библиотек. Например так:

1. Пакет для текущего питона называется python-<имя>.

2. Для питона отличного от текущего -- pythonX.Y-<имя>.

> 
> 
>>3. Калуарность тестирования нового питона (т. к. помещать его в Сизиф,
>>пока "ядром питона" не оттестировано/портировано -- нельзя).
> 
> 
> Можно делать так как я делал с rpm-build.  То есть запускаем тестовую
> пересборку и смотрим какие есть проблемы.  Решаем часть проблем, опять
> запускаем тестовую пересборку.  Проблем стало меньше.  Тогда
> окончательно пускаем в сизиф.

  Как при этом _простым_ образом решать проблемы с зависимостями от
пакетов другого мантейнера?

  Да, git.alt часть проблем закроет... Но возможность вытащить из
репозитария подходящий pythonX.Y-<имя> (если он уже есть), собранный его
мантейнером, на мой взгляд не лишняя.

> 
> Кулуарности никакой нет -- напротив, тому, кто за это взялся, придётся
> очень много объяснять по поводу "типичных проблем" и т.д.
> 
> 
>>  Причём, за счёт того что для каждого использующего питон "ядром
>>питона" своё, и с "ядром питона" коллег совпадать не обязано -- получаем
>>источник конфликтов в рассылке...
> 
> 
> "Ядро питона" это все про-питоновские пакеты в сизифе.
> Минимальный план миграции -- просто пересобрать их с новым питоном.
> Мне хотелось бы, чтобы при этом они ещё и работали.  Для этого нужно
> какое-то минимальное тестирование при СБОРКЕ.  Хотя бы после сборки
> попробовать загрузить питоном свежесобранные модули.
> 
> То есть пересобираемость пакета должна давать минимальную гарантию
> его работоспособности.  Тогда получается технологичное решение.
> Иначе, действительно, остается только "источник конфликтов в рассылке".

  Согласен. Но ручка для явного переключения на pythonX.Y всё равно не
лишняя.

-- 

С уважением. Алексей.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 548 bytes --]

  reply	other threads:[~2007-10-28 12:36 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-26 17:23 Alexey Tourbin
2007-10-26 18:56 ` Peter V. Saveliev
2007-10-26 19:24   ` Alexey Tourbin
2007-10-26 21:05     ` Peter V. Saveliev
2007-10-26 21:58       ` Alexey Tourbin
2007-10-26 22:45         ` Peter V. Saveliev
2007-10-26 23:02           ` Alexey Tourbin
2007-10-26 23:12             ` Peter V. Saveliev
2007-10-27  7:58             ` Andrey Rahmatullin
2007-10-27 14:49               ` Alexey Tourbin
2007-10-27 16:15                 ` Andrey Rahmatullin
2007-10-27  6:22           ` Vitaly Lipatov
2007-10-27  8:05             ` Peter V. Saveliev
2007-10-30  8:30       ` Максим Иванов
2007-10-28  0:56     ` Aleksey Avdeev
2007-10-28  1:58       ` Alexey Tourbin
2007-10-28  4:10         ` Aleksey Avdeev
2007-10-28  7:38           ` Vitaly Lipatov
2007-10-28  9:00             ` Peter V. Saveliev
2007-10-28  9:41               ` Aleksey Avdeev
2007-10-28 13:49                 ` Alexey Tourbin
2007-10-28 10:27             ` Aleksey Avdeev
2007-10-28 22:52             ` Pavlov Konstantin
2007-10-28 10:08           ` Alexey I. Froloff
2007-10-28 10:31             ` Eugene Prokopiev
2007-10-28 11:25               ` Alexey I. Froloff
2007-10-28 14:12               ` Alexey Tourbin
2007-10-28 16:52                 ` Peter V. Saveliev
2007-10-28 17:34                   ` [devel] python vs gcc Alexey Tourbin
2007-10-28 18:43                     ` Peter V. Saveliev
2007-11-02  6:21                       ` Andrey Orlov
2007-11-02  7:25                         ` Peter V. Saveliev
2007-11-02  8:54                           ` Andrey Orlov
2007-11-02  9:20                         ` Alexey I. Froloff
2007-11-03  9:09                           ` Andrey Orlov
2007-11-03 14:07                             ` Alexey I. Froloff
2007-11-05 20:43                               ` Andrey Orlov
2007-10-28 10:38             ` [devel] Переходное полиси для для питона Aleksey Avdeev
2007-10-28 10:58               ` Sergey Bolshakov
2007-10-28 11:20                 ` Aleksey Avdeev
2007-10-28 11:17               ` Alexey I. Froloff
2007-10-28 11:25                 ` Aleksey Avdeev
2007-10-28 11:55                   ` Alexey I. Froloff
2007-10-28 12:42                     ` Aleksey Avdeev
2007-10-28 11:52                 ` Alexey Tourbin
2007-10-28 12:16                   ` Alexey I. Froloff
2007-11-03  9:31               ` Andrey Orlov
2007-10-28 14:12             ` Alexey Tourbin
2007-10-28 16:55               ` Peter V. Saveliev
2007-10-28 12:11           ` Alexey Tourbin
2007-10-28 12:36             ` Aleksey Avdeev [this message]
2007-10-28 14:34               ` Alexey Tourbin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47248230.1030004@solin.spb.ru \
    --to=solo@solin.spb.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git