[devel] Re: A: Полиси ( я свел все воедино ) + FAQ

Andrey Orlov =?iso-8859-1?q?cray_=CE=C1_neural=2Eru?=
Пн Фев 23 09:50:40 MSK 2004


On Monday 23 February 2004 00:40, you wrote:
> Hello Andrey,
>
> On Sun, Feb 22, 2004 at 10:32:27PM +0300, Andrey Orlov wrote:
> >         2.  В день выхода новой минорной версии python (X.Y), делается
> > форк: новая версия собирается под именем python, тогда как старая - под
> > именем pythonXY-1;
>
> Что за "-1"? Почему не просто pythonXY версии X.Y.Z, как у людей?

Если (X,Y) == (2,4), то  pythonXY-1 == python23, подстрока Y-1 обозначала
"предыдущую версию".

> >             Замечание 1: Более строго было бы использовать имя
> > pythonX.Y-1, но тут сложилась некая традиция, не уверен, что хорошая;
>
> Это какой-то ментальный блок, существующий со времён kernelXY,
> а то и раньше.

Да, наверно. Мне так тоже неудобно.

> >         4.  Новая схема сборки модулей гарантирует (зависмостямb)
> >             невозмиожность установки модулей от старых версий python с
> > его новыми версиями
>
> По-моему, слишком жёсткое ограничение.

Нет, не слишком, если мы хотим более-менее надежной работы.

> Нужно решить лишь такую задачу: если есть зависимость между модулями,
> эта зависимость должна учитывать версию python ABI. Как этого можно
> достичь, я писал.

Увы, но синтаксис языка тоже менятся, не оставаясь до конца совместимым
ни вперед, ни назад. Zope для версии 2.2 разражается кучей предупреждений
и ввалится, при запуске с 2.3, причем исключительно из-за проблем синтаксиса.

> >             (по крайней мере на уровне минорных версий,
> >             нужно ли затрагивать сабминоры - вопрос открытый, выйдет
> >             python2.3.4 - посмотрим);
>
> Я думаю, можно полагаться на неявное обязательство разработчиков
> Python не ломать ABI между микро-релизами.

Я тоже думаю, только как я уже написал - дело не в ABI, а в синтаксисе.

> >         Я медленно, но верно, пилю питон на части.
>
> В этом процессе главное -- чувство меры ;)

Потому и медленно. Нет, я не пытаюсь распилить его на "все" модули, по одному файлу
на пакет. Только на крупные группы: python-modules-xml, python-modules-http, примерно так.

> Я правильно понял, что python это "панама", которая тянет python-base
> и python-modules?

Да, python-weak - вторая панама, которая провайдит python.

> >             python-obsoletes -- пакет, содержащий фрагменты python,
> > которые объявлены устаревшими (например, rotor.py) или несекъюрными (он
> > же, в более ранее время);
>
> s/obsoletes/obsolete/ -- чтоб было более понятно по-английски.

Thnks.

> >             python-modules-* -- много модулей, реально каждый пакет
> > содежит большую группу модулей, относящихся к примерно-одной тематике,
> > над автоматической кластеризацией я сейчас работаю;
> Я против избыточной "кластеризации" bundled модулей примерно по тем же
> причинам, по которым протестовал против отщепления модулей perl от
> штатной сборки.

Про перл не читал, избыточной не будет.

> По крайней мере, такое правило должно соблюдаться: если пользователь ставит
> apt-get install python python-doc
> он вправе расчитывать на наличие всех модулей, о которых написано в

Соблюдается. Правда, в перспективе, скорее python, python-modules, python-doc.
зависимость python / python-modules - временное решение.

> плюс подобранного вручную набора python-modules-* может быть полезна.
> Просто не нужно подвергать этому всех пользователей.

Я где-то предлагал иное?

> Вдобавок, без автоматического определения зависимостей
> возникнут проблемы у разработчиков, которым вместо одной зависимости
> на python = %__python_version как на всю платформу придётся смотреть,
> какие микропакеты реально нужны для работы.

Об этом было сказано в конце парграфа, вы просто не дочитали.

> >             python-tools-* -- различные инструменты для и на python,
> >                 например python-tools-idle;
> Это есть хорошо. Idle должен был отпочковаться.

Уже. Даже в сизифе лежит уже месяц.

> >             python-weak -- python с облегченными зависимостями,
> > допускающий провести совместную установку со старой версий pythonX.Y
>
> Я чую ненужную сложность.
> не будет установлен. Отпустите python-weak в пространство
> невоплощённых идей.

Не отпущу. Вам не мешает - мне нужно, некоторым другим - тоже. Кроме того, это работает.

> Вдогонку: если апгрейд модуля/приложения требует python = 2.3, почему
> бы не иметь в дистрибутиве python23, который благополучно вытянется,
> если он такое предоставляет? У нас уже организовано так несколько
> семейств пакетов, стоит ли здесь изобретать велосипеды?

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

> Сделайте исключение. Слишком многие знают старика под этим именем.

Provides: tkinter. Не вижу проблем.


>
> >             2.2.1 Удаление старой версии
> >
> >                 apt-get install pythno
>
> Не уверен, что правильно понял.

Установка новой версии командой apt-get install python приведет
к сносу старой версии, из-за существующего между ними конфликта.


>
> >     4.  В параметре GROUP спека должен быть указан
> > Development/Python/Modules;
>
> Что же тогда останется в Development/Python? :)
> Присоединяюсь к уже высказанному мнению, что в новой группе нет нужды.

Порядка 20ти пакетов самого пакета python, различные python-tools для разработки.
Уже высказанное мнение, звучало, помнится, как "если она действительно нужна, то будет создана".

> >             Зависимости на пакеты с другими модулями python надо
> > прописывать как
> >
> >                 Requires: python%__python_package_version-<anotherModule>
>
> Хотелось бы здесь поиметь автоматику...

Мы думаем над этим.

> Hint от соразработчика perl.{req,prov}, поимевшего кучу головной боли с
> синтаксисом Perl: в скриптах на Python, хвала ему и его разработчикам,

[skip]

> > '/' для получения относительного пути к файлу модуля (без суффикса
> .py) или каталогу с файлом __init__.py

Или файлу *zip, или *.so (с четырьмя разными доп.суффиксами), или вообще отсутвствующему
файлу, и наконец - еще есть перекрытая функция __import__ и приложения, 
изменяющие python_path. Причем, достаточно распространенным способом.

Так что, к сожалению, не все так просто, я уже попробовал. Пока что скрипт, эксплуатирующий
машину импорта самого python дает существенно более полный список зависимостей,
чем всякие игры с регексп. 

> >         6.  Симлинки на головные модули пакетов, устанавливаемых
> > многократно с специфичными версиями python должны управлятся посредством
> > alternatives, что позволяет избежать ситуации, с запуском головного

> Интересно, как вы этого добьётесь, если python и инструмент
> устанавливаются раздельно и используют отдельные конфигурации
> для alternatives (slave невозможен).

Пока что я этого добиваюсь, так как все такие пакеты мои и являются частью питона,
как например idle и pynche.

> Поддерживаю. Однако, python-doc отяжелеет от всего многообразия форматов.

Да, есть такая опасность. Пока что меня больше трогало то, что html-документация на
python это не все, и даже не самое интересное (удобное). Начнет тяжелеть - будем решать.
Что до info vs html ... Почему-то мне info ближе.

> Не стоит. Python - скриптовый язык, и пусть модули сохраняют
> скриптовый вид. Если нужна "компактность, компактность, компактность",
> пользуйтесь zip-ованными архивами, которые поддерживает python 2.3

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

> Кто-нибудь вообще проверял работоспособность python на одних
> .py[co] без исходника? Отладка точно пострадает. Что-нибудь ещё?

Я. Уже полгода, каждый день проверяю. На домашней машине некоторые пакеты пересобраны таким
образом. Отладка не страдает, других проблем нет. Единственная
большая проблема - нужно знать что ты ставишь и зачем, причем основная тонкость не отсутствие
_исходника_, без него-то все работает на ура, основная тонкость pyc vs pyo. Если сервер "продакшн продакшн
и никакой отладки" то ставим pyo и все ОК. Если появляется отладка - то, похоже, придется ставить и pyc и pyo
в основном пакете. 

-- 
WthBstRgrds -- Андрей Орлов --  
 --- http: www.neural.ru, mail: cray на neural.ru, jid: cray на altlinux.org ---
----------------------------------------





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