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 --]
next prev 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