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