TeXLivePackaging

Материал из ALT Linux Wiki
Версия от 01:01, 10 декабря 2008; Bga (обсуждение | вклад) (Граф зависимостей)

Упаковка TeXLive

На этой странице описана организация дистрибутива TeXLive версии 2008.0

TeXLive package manager

Официальный дистрибутив распространяется вместе с собственной оболочкой для установки: tlmgr. Логически связанные файлы сгруппированы в пакеты, их описание формирует базу данных: texlive.tlpdb.

Пакеты TeXLive

Описание пакета состоит из

  • названия (name)
  • категории (category)
    • базовая часть (TLCore)
    • пакет (Package)
    • коллекция (Collection)
    • схема (Scheme)
    • документация (Documentation)
  • краткого описания (shortdesc)
  • подробного описания (longdesc)
  • списка файлов
    • исполняемых (binfiles)
    • используемых (runfiles)
    • документации (docfiles)
    • исходников (scrfiles)
  • зависимостей (depend)
  • прочего (revision, executes, catalogue-*)

Пример описания пакета 12many:

name 12many
category Package
revision 7340
shortdesc 12many, generalizing mathematical index sets
longdesc In the discrete branches of mathematics and the computer
longdesc sciences, it will only take some seconds until you're faced
longdesc with a set like {1,...,m}. Only some people write
longdesc $1\ldotp\ldotp m$, or $\{j:1\leq j\leq m\}$, and that journal
longdesc you're submitting to might want something else entirely. \otm{}
longdesc provides an interface that makes changing from one to another a
longdesc one-line change.
docfiles size=98
 texmf-dist/doc/latex/12many/12many.pdf
 texmf-dist/doc/latex/12many/README
srcfiles size=6
 texmf-dist/source/latex/12many/12many.dtx
 texmf-dist/source/latex/12many/12many.ins
runfiles size=1
 texmf-dist/tex/latex/12many/12many.sty
catalogue-ctan /macros/latex/contrib/12many
catalogue-date 2007-05-25 16:15:27 +0200
catalogue-license lppl
catalogue-version 0.3

Пакетные зависимости TeXLive

Зависимости a la RPM Requires в TeXLive описываются одной или несколькими директивами depend. Пакеты зависят от других пакетов, коллекции - от пакетов, схемы - от коллекций и пакетов (коллекции и схемы не содержат файлов). Специального вида зависимость depend bin-package.ARCH подразумевает выбор конкретного пакета для используемой архитектуры, например, bin-package.i386-linux. Циклических зависимостей (pkg1->pkg2->pkg1) пока не обнаружено. Пакеты, коллекции, схемы и зависимости между ними можно наглядно изобразить в виде графа: Tlpdb-graph.svg

Особенности сборки в Debian и ALT Linux

Идея разделить дистрибутив на 5 исходных пакетов родилась в Debian и позднее была позаимствована командой ALT Linux. Поэтому описание сборки в существенной мере будет повторять руководство Debian и Debian TeX sub-policy.

Исходные пакеты

В основанных на RPM дистрибутивах бинарные пакеты получаются пересборкой исходных (src.rpm). Дерево TeXLive поделено на 5 относительно независимых частей:

texlive-base
основной набор файлов
texlive-bin
исходники компилируемых архитектуро-зависимых программ
texlive-lang
поддержка национальных языков
texlive-doc
документация
texlive-extra
дополнительные файлы

Бинарные пакеты

Строго говоря, большинство файлов TeXLive является текстовыми, за исключением некоторых утилит из texlive-base-bin.

  • texlive-base:
    texlive-latex-base
    основные файлы LaTeX, достаточные для простых документов
    texlive-latex-recommended
    рекомендуемый набор файлов LaTeX, достаточный в большинстве других случаев
    texlive-fonts-recommended
    рекомендуемый и обычно достаточный набор шрифтов
  • texlive-bin:
    texlive-base-bin
    основной набор исполняемых и конфигурационных файлов
  • texlive-doc:
    texlive-doc-*
    пакеты texlive-doc-en, texlive-doc-de и т.п., содержащие документацию на соответствующих языках
  • texlive-lang:
    texlive-lang-*
    пакеты texlive-lang-dutch, texlive-lang-spanish и т.п. с поддержкой национальных особенностей, например, переносов
texlive
виртуальный пакет, зависящий от разумного набора реальных
texlive-full
виртуальный пакет, зависящий от всех пакетов TeXLive

Есть и другие пакеты с дополнительными возможностями и шрифтами. Смотрите их описание.

Настройки

Системные и пользовательские настройки осуществляются перечисленными ниже переменными из файла /etc/tex-common/web2c/texmf.cnf, первые имеют больший приоритет.

TEXMFCONFIG
Пользовательские настройки. По умолчанию: $HOME/.texmf-config/
TEXMFVAR
Сгенерированные пользователем файлы. По умолчанию: $HOME/.texmf-var/
TEXMFHOME
Пользовательские неменяемые файлы, например, дополнительные пакеты LaTeX. По умолчанию: $HOME/texmf/
TEXMFSYSCONFIG
Общесистемные настройки. По умолчанию: /etc/texmf
TEXMFSYSVAR
Сгенерированные общесистемные файлы. По умолчанию: /var/lib/texmf/
TEXMFLOCAL
Общесистемные файлы. По умолчанию: /usr/local/share/texmf/
TEXMFDIST
Общесистемные файлы, установленные из основных пакетов RPM. По умолчанию: /usr/share/texmf-texlive
TEXMFMAIN
Общесистемные файлы, установленные из дополнительных пакетов RPM. По умолчанию: /usr/share/texmf/

Новые файлы обычно кладутся администратором в TEXMFLOCAL, а пользователями - в TEXMFHOME. При необходимости можно добавить новый путь к переменной TEXMF в файле /etc/texmf/web2c/texmf.cnf (первые записи имеют больший приоритет). TEXMFCONFIG и TEXMFVAR используются при запуске команд texconfig, updmap и fmtutil пользователем. Имейте в виду, что texconfig при первом запуске копирует файлы настроек из TEXMFMAIN или TEXMFSYSCONFIG и не отслеживает последующие системные изменения.

Конфигурационные файлы

texmf.cnf
базовые настройки и пути используемых программ
fmtutil.cnf
доступные форматы TeX
updmap.cfg
конфигурация шрифтов
language.dat
шаблоны переносов для разных форматов

Внимание! В отличие от Debian в ALT Linux пока что редактируются непосредственно эти файлы, а не шаблоны для них.

Кеширование шрифтов

TeX компилирует шрифты (пиксели, метрики и пр.) на лету. Эта информация может быть закеширована и использована позднее. На много-пользовательских системах желательно указать переменной VARTEXFONTS на какой-нибудь каталог, например, /var/cache/fonts, и заменить переменную MT_FEATURES с texmfvar на varfonts в файле /etc/texmf/web2c/mktex.cnf