[devel] texlive /usr/bin/latex dependencies

Kirill Maslinsky kirill на altlinux.org
Вс Июн 28 19:59:52 MSD 2009


On Thu, Jun 25, 2009 at 06:31:03PM +0400, Grigory Batalov wrote:
> On Sun, 21 Jun 2009 16:49:00 +0400
> Alexey Tourbin wrote:
> 
> > И ещё желательно озвучить несколько примеров неудачных зависимостей
> > между texlive пакетами.  Чтобы понять расклад, где там что вылезает.

[...]

> Можно поступить следующим образом:
> - переразбить микро-пакеты на коллекции, избежав циклических зависимостей;
> - заблокировать некоторые зависимости (например, условные) директивами
>   %add_texmf_req_skip latex/<модуль> и %add_findreq_skiplist <файл>,
>   чтобы разорвать цикл.

Я считаю, что нужно обойтись без блокирования зависимостей, иначе
обессмысливается вся эта деятельность по автопоиску. Задача этой системы
-- обеспечить, чтобы в целостной системе при компиляции латех-документа
не возникало сообщений о недостающих стилях (кроме немногих исключительных
случаев). 

Предлагаю следующие шаги:

1. Немного ослабить логику поиска зависимостей. См.:

commit 63b8c437025fb1108fa6e71fd12a9822675563d4
Author: Kirill Maslinsky <kirill на altlinux.org>
Date:   Fri Jun 26 13:33:41 2009 +0400

    texmf.req: skip conditionally loaded packages
    
            Conditional loads are detected with simple heuristic:
    
            if package code contains stadard LaTeX check for existance
            of certain file, and LaTeX package with corresponding name
            is requested somewhere in the code, this package is supposed
            to be loaded conditionally (or else why to check for
            existence?). This heuristic won't handle obfuscated code
            where macro parameter is used instead of plain package file
            name, but is considered to be a good approximation for the
            typical case.
    
            On the main part of texlive tree this change eliminates about
            3% of all generated latex dependencies (100 out of 3000).

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

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

А главное, он позволяет избавиться от зависимости texlive-latex-base на 
latex2html! и некоторых других столь же излишних зависимостей.

т.е. нужна пересборка с rpm-build-texmf-0.3.4-alt1 (см. пока у меня в git, 
отправил на сборку)

2. Перенести часть пакетов(texlive) в другие коллекции. 

Я сразу написал в формате tpm2deb

# 1ая итерация: чистка base
# eliminating texlive-latex-base->texlive-latex-extra dep
# весь ltxmisc убирать из collection-base боязно, т.к. стили оттуда
# могут использоваться. но именно файлы из этого пакета порождают кучу
# левых зависимостей.
move;ltxmisc;collection-latexrecommended
# есть большое желание спихнуть hyperref в collection-latexrecommended, вместе с его 
# безусловными зависимостями. При всём моём уважении к этому пакету...
# Интересно, сколько пакетов могут использовать его для сборки документации?
# Но если hyperref оставить в base, то надо туда же тащить memoir, oberdiek
# и может быть что-то ещё. Мне кажется, base должен быть более консервативным.
move;hyperref;collection-latexrecommended
# eliminating texlive-latex-base->texlive-extra-utils dep
# пакет oberdiek почему-то попал в extra-utils, его место в recommended
move;oberdiek;collection-latexrecommended

# тут для справки привожу список отдельных файлов из ltxmisc, порождающих
# нежелательные зависимости
# some packages from ltxmisc collection are not so misc:
#move-file;texmf-dist/tex/latex/ltxmisc/abstbook.cls;collection-latexextra
#move-file;texmf-dist/tex/latex/ltxmisc/subfigmat.sty;collection-mathextra
#move-file;texmf-dist/tex/latex/ltxmisc/concrete.sty;collection-fontsextra
#move-file;texmf-dist/tex/latex/ltxmisc/a4wide.sty;collection-latex-recommended
#move-file;texmf-dist/tex/latex/ltxmisc/vertbars.sty;collection-humanities


#### texlive-latex-recommended
#move;ifxetex;collection-latexrecommended
# powerdot требует pstricks и extra
# не вынести ли его в отдельный пакет (texlive-latex-extraextra)


## 2ая итерация: чистка recommended
move;minitoc;collection-latexrecommended
move;powerdot;collection-latexextra
move;subfigure;collection-latexrecommended
# let recommended depend on mathextra (10mb+)
move;beton;collection-mathextra
move;euler;collection-mathextra
# eliminating texlive-latex-recommended->texlive-humanities dep
move;lineno;collection-latexrecommended
# footmisc нужно перенести поближе из extra, он слишком многим нужен
move;footmisc;collection-latexrecommended

# eliminating texlive-lang-cyrillic->texlive-latex-extra dep
move;lastpage;collection-latexrecommended
move;wrapfig;collection-latexrecommended

## 3я итерация, чистка от зависимостей на texlive-latex-extra
# eliminating texlive-humanities->texlive-latex-extra dep
move;ncctools;collection-latexrecommended
move;fmtcount;collection-latexrecommended
move;ipa;collection-humanities
move;numprint;collection-latexrecommended


# eliminating texlive-math-extra->texlive-latex-extra dep
move;filecontents;collection-latexrecommended

# elimination dep texlive-games->texlive-latex-extra
move;xifthen;collection-latexrecommended

# elimination dep texlive-pstricks->texlive-latex-extra
move;ifplatform;collection-latexrecommended

Надо пересобрать texlive с указанными перемещениями и проверить ещё раз, что нигде
не осталось нежелательных в свете трехуровневой схемы BASE/RECOMMENDED/EXTRA зависимостей. 
И не возникло ли новых по недосмотру. И можно будет выкладывать.

-- 
КМ
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090628/de793281/attachment-0001.bin>


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