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 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 зависимостей. И не возникло ли новых по недосмотру. И можно будет выкладывать. -- КМ