[devel] python3.x(qwe) vs python3(qwe)

Alexey Morozov morozov на altlinux.org
Вт Фев 2 10:54:18 UTC 2010


В сообщении от Вторник 02 февраля 2010 12:06:56 автор Andrey Rahmatullin 
написал:
> On Mon, Feb 01, 2010 at 12:03:14AM +0600, Alexey Morozov wrote:
> > Тогда надо кардинально менять схему упаковки. В своём нынешнем виде и
> > заявленных целях (кстати, если не секрет, есть где-нибудь место, где эти
> > цели явно проартикулированны?)
> 
> Только не говори, что ты не имеешь отношения к нашему Python Policy.

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

На мой взгляд, основная проблема нынешней схемы:

с одной стороны, используются механизмы привязывания модуля к определённой 
версии при сборке пакета (собственно, для большинства модулей эти механизмы 
вытекают из схемы их расположения, %_libdir/pythonX.Y, а для меньшей части - 
из привязок к libpython). При этом, замечу, основная цель выбранного 
расположения, - борьба с несовместимостями между версиями и архитектурами в 
питоньем байткоде, - выглядит для меня достаточно умозрительной here and now.

с другой стороны, заложенную при написании питон-полиси схему с множественным 
питоном и плавной, итеративной миграцией модулей, благополучно пристрелили. В 
общем, она и вправду, видимо, того стоила, но, факт, необходимость 
множественности питонов напрямую следует из сформулированных _тогда_ целей.

Как из этого выходить? Фиг знает. Можно, например, отказаться от принципа 
"инсталлируется apt'ом - значит работоспособно" (да-да, я знаю, что это плохо 
:) ). 

Кстати, вероятнее всего, 90-ста процентам тех пакетов, которые используют 
питон в качестве языка скриптования, совсем необязателен "полноценный питон" 
со сколько-нибудь полной библиотекой, достаточно libpython. Соответственно, 
масштаб революции в репозитории можно будет сильно уменьшить, если в момент 
заливки нового питона предоставлять libpython-compat для уходящей версии.

Второй вариант - научиться автоматически блокировать в репозитории пакеты, 
которые явно или неявно связаны с питоном, чтобы заливка новой версии не 
превращалась в увлекательную игру с Ахиллесом и черепахой в главных ролях. Но 
тут, чес-гря, я не знаю, каковы будут трудозатраты на реализацию такого 
решения.

Дебиановцы, повторюсь, пошли по третьему пути. source-level пакеты 
распространяются в виде .py, которые при инсталляции раскладываются вместе со 
сгенерёнными тут же .pyc в каталоги, соответствующие установленным на 
конкретной машине версиям python'а. Отдельно решается вопрос с архитектурно-
зависимыми, "бинарными" пакетами.

Насколько я понимаю, на сегодняшний день у них наиболее чётко проработана 
схема с поддержкой нескольких версий питона одновременно, и эта схема как 
никакая другая рассчитана на независимую, "распределённую" процедуру 
обновления пакетов в репозитории. В том числе, и обновлении питона и его 
запчастей.

Ну, в общем, как-то так. Собственно, когда я спрашивал о явном проговаривании 
целей, я подразумевал, что такое проговаривание позволит понять, какие решения 
являются абсолютно необходимыми, а от каких можно и нужно безболезненно 
отказаться.

АМ


Подробная информация о списке рассылки Devel