[sisyphus] Re: tetex-3.0: файлопомойка разобрана!

Ilia K. =?iso-8859-1?q?mail4ilia_=CE=C1_gmail=2Ecom?=
Пн Май 23 16:07:08 MSD 2005


On 5/22/05, Yura Zotov <yz на altlinux.ru> wrote:
> On Sun, May 22, 2005 at 09:53:58AM +0300, Ilia K. wrote:
> > Продвижение к Сизифу радует. Вот только помнится собирались в Сизифе
> > пакеты не зависяшие от платформы выделять в noarch.rpm ветку. Если
> > мнения на этот счёт не изменились, то наверно лучше бы бОльшую часть
> > i586.rpm пакетов переименовать. И может ещё tetex-core разделить на
> > бинарики + всё остальное?
> 
> Если уж на то пошло, то задачу надо ставить более абстрактно.
> 
> Дистрибутив TeX-а состоит из нескольких частей:
> 1. Программы типа "tex", которые являются компиляторами своего
>    собственного языка. Вспомогательные библиотеки. Их
>    конфигурационные файлы и т.п. Эти программы делают именно ту
>    полезную работу, ради которой TeX и был придуман.
> 2. Так называемые "форматы". Это адаптация внутреннего языка
>    программы tex для пользователя в приложении к задачам
>    подготовки текстовых документов.
> 3. Шрифты, необходимые "форматам" для нормального создания
>    текста. В принципе, можно считать, что они не отделимы от
>    форматов.
> 4. Всевозможные "дополнения" к форматам, призванные так или иначе
>    предоставить более простой доступ к нетривиальным возможностям
>    форматов. Это файлы типа *.sty. Они могут быть весьма
>    разнообразными, сопровождаться дополнительными шрифтами,
>    предоставлять возможности по поддержке разных языков и т.п.
> 5. Дополнительные утилиты для просмотра, преобразования и т.п.
> 
> Варьируя набор конкретный компонентов дистрибутива можно изменять
> набор возможностей по созданию тех или иных текстовых документов.
> 
> teTeX это один из дистрибутивов TeX-а. Он разделён на две части.
> В первой части программы из 1 и 5. Во второй вся мощь
> дистрибутива: пункты 2, 3 и 4. Очевидно, что платформозависимая
> только первая часть.

Отлично. Вот эту первую часть и надо собирать в i586.rpm (или что там ещё), а всё остальное - в noarch.rpm. Я в spec'ах не силён, но по-моему там достаточно переименовать соотв. генерируемые пакеты.

> 
> Решая задачу по поддержке нескольких платформ, необходимо
> дистрибутив teTeX предоставлять пользователям тоже в двух частях.
> Учитывая, что обе эти части достаточно большие и включают в
> себя много компонент, эти части пришлось бы дробить на более
> мелкие функционально монолитные кусочки, чтобы пользователь мог
> сам составить себе необходимую функциональность без лишних
> файлов. 

Единственный, по моему мнению плюс этого "дробления" - это экономия места при (не)установке пакетов. Учитывая, что мы говорим о teTeX - этот плюс весьма сомнительный, так как:
* teTeX целиком не такой уж большой по современным меркам (пара сотен MB), так что сейчас трудно найти машину, где бы это было проблеммой. Современная цена 1Gb на HDD (что намного больше нужд TeX'а) - это 0.5$.
* teTeX любит "разрастаться", создавая кучу файлов в /var/lib/texmf, но это только то, что реально использовалось при обрработке документов (сгенерированные шрифты например) и рамер инсталляции на это никак не влияет.
* если всё таки кто-то собирается использовать TeX на очень "ограниченной"  машине, то вряд ли ему подойдёт универсальный дистрибутив типа teTeX. Скорее всего ему лучше самому поковыряться и выбрать по минимуму только то, что необходимо (по схожим причинам пакеты в АльтЛинукс собираются для i586 - если вам действительно надо запускать программу на i486, найдутся силы и для перекомпиляции).
* конечный пользователь TeX'а хочет, чтобы у него "был TeX". То есть, поставил пару (а не десяток) пакетов, и всё работает. Лазать по apt-у часами в поисках нужного пакета никого не прельщает. 
* для солидных учреждений десяток мегабайт тоже намного дешевле времени админа, которому придётся выяснять, почему у Васи Пупкина не скомпилировался такой-то файл, какой теховский пакет он требует и, наконец, в каком rpm пакете тот пакет искать.

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

Абсолютно согласен.

> Осмысленным в этой ситуации мне представляется только одно --
> создание собственного дистрибутива TeX-а. В этом случае создаётся
> общая инфраструктура дистрибутива. Далее, согласно требуемой
> функциональности, добавляются независимым образом компоненты:
> программы, форматы, стили, утилиты, шрифты... Поскольку
> существует единая инфраструктура, компоненты может добавлять любой
> желающий. Тем самым мы исключаем стадию разборки паровоза и
> концентрируемся непосредственно на сборке самолёта.

Я думаю, это излишне. Незачем изобретать (точнее, пересобирать) уже готовый и "объезженный" велосипед. Есть большой, стабильный, известный и наиболее распространённый  под линуксом дистрибутив TeX'а, и это teTeX (есть и другие уважаемые дистр-ы, например TeX Live, но у него немного другая ориентация). Для бОльшей убедительности насчёт teTeX смотрим:
http://www.google.com/search?q=tex+distribution
http://www.ctan.org/installationadvice/        (3-й абзац)
http://www.tug.org/interest.html#free
http://en.wikipedia.org/wiki/TeX#Compatible_tools

> Один я это не потяну. Я могу собрать из паровоза
> модернизированный паровоз, но собирать с нуля самолёт я пока не
> готов.

Правильно, и не надо. Да и сейчас вы с разбивкой обошлись довольно сурово. Я предлагаю сделать попроще:
* все бинарики - в что-то вроде tetex-bin.i586.rpm
* возможно, дополнительные утилиты не требующиеся для обработки tex файла вынести в tetex-utils.i586.rpm
* документация - tetex-doc.noarch.rpm
* шрифты - tetex-fonts.noarch.rpm (это можно ещё разделить на шрифты metafont/type1/чего там ещё, или если большие или конфликтуют/реализуют один и тот же шрифт)
* прочее аппаратно-независимое (типа sty/tex/...) - tetex-files.noarch.rpm
* можно в отдельные пакеты вынести пару самых больших макропакетов типа latex/context, но большой практической пользы в этом я не вижу
* всякие дополнения, отсутствующие в оригинальном teTeX'е - tetex-addons-*

Главное, по вышеописанным причинам, чтобы установка была простой (как например openoffice - один/два пакета - и готово) и было разделение на платформо-зависимые / независимые компоненты. Я слышал есть в перспективе поддержка 64bit в Альте, так что всё равно это придётся когда-нибудь делать.

У меня самого сил + времени + умений для всего этого нет, так что всё перечисленное можно считать личным мнением пользователя TeX'а, к которому можно прислушаться, а можно и пропустить мимо ушей. Но в общем, спасибо за приручение teTeX в среде АльтЛинукс!


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