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

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

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. При появлении нового питона в Сизифе -- часть приложений (что в
> "ядром питона" не вошла) "неожиданно" перестанет работать.

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

> 3. Калуарность тестирования нового питона (т. к. помещать его в Сизиф,
> пока "ядром питона" не оттестировано/портировано -- нельзя).

Можно делать так как я делал с rpm-build.  То есть запускаем тестовую
пересборку и смотрим какие есть проблемы.  Решаем часть проблем, опять
запускаем тестовую пересборку.  Проблем стало меньше.  Тогда
окончательно пускаем в сизиф.

Кулуарности никакой нет -- напротив, тому, кто за это взялся, придётся
очень много объяснять по поводу "типичных проблем" и т.д.

>   Причём, за счёт того что для каждого использующего питон "ядром
> питона" своё, и с "ядром питона" коллег совпадать не обязано -- получаем
> источник конфликтов в рассылке...

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

То есть пересобираемость пакета должна давать минимальную гарантию
его работоспособности.  Тогда получается технологичное решение.
Иначе, действительно, остается только "источник конфликтов в рассылке".

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2007-10-28 12:11 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 [this message]
2007-10-28 12:36             ` Aleksey Avdeev
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=20071028121137.GA19325@solemn.turbinal \
    --to=at@altlinux.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