texlive-20230313-source

Introduction à TeX Live from source

[Note]

Note

D'après https://www.tug.org/historic/ le site principal en France ne prend en charge que ftp et rsync. Maintenant que ftp est globalement obsolète, cette page a des liens vers des miroirs, dont certains prennent en charge https, p. ex. en Utah et Chemnitz ainsi qu'en Chine. Si vous préférez utiliser un miroir différent des liens d'exemple ici, vous devrez naviguer dans systems/historic/texlive/2023 ou systems/texlive/2023 suivant le cas.

La majorité de TeX Live peut être construite depuis les sources sans une installation pré-existante, mais xindy (pour l'indexage) demande des versions fonctionnelles de latex et pdflatex quand configure est lancé, et les suites de tests et l'installation de asy (pour les graphiques vectoriels) échoueront si TeX n'a pas déjà été installé. De plus, biber n'est pas fournit dans les sources de texlive et la version de dvisvgm dans l'arborescence de texlive ne peut pas être construit si les bibliothèques partagées du système sont utilisées.

L'ensemble de ces paquets sont traités dans leur propre page et peuvent être construits après l'installation de ce paquet. Si vous ne l'avez pas encore fait, vous pouvez démarrer par Initialisation du PATH pour TeX Live pour que les dernières commandes pour initialiser la nouvelle installation soient trouvées.

This package is known to build and work properly using an LFS 12.0 platform.

Informations sur le paquet

Téléchargement supplémentaire requis

La plupart de l'environnement texlive (incluant scripts, documentation, polices et divers autres fichiers) n'est pas dans l'archive des sources. Vous devez les télécharger séparément. Cela vous donnera tous les fichiers supplémentaires qui sont fournis par une installation complète de la version binaire, ce n'est pas réaliste de limiter les parties à installer.

À cause de la taille de ce paquet, il n'est pas disponible sur les miroirs BLFS. En cas de problème, allez sur http://www.ctan.org/mirrors/ pour trouver un miroir plus accessible.

À partir de 2019, la base de données tlpdb des paquets dans texlive n'est plus installée avec les sources. Mais texdoc a besoin d'un fichier de cache dérivé de cette base (et créera le cache à sont premier démarrage).

Dépendances de TeX Live from source

Recommandées

Facultatives

Les sources sont livrées avec leurs propres versions de quelques bibliothèques qui ne sont soit plus dans un développement actif, soit seulement utilisées pour des fonctionnalités limitées. Si vous les installez, comme d'autres dépendances facultatives dans ce livre, vous devrez dire à configure d'utiliser les versions du système. GD, t1lib, ZZIPlib, TECkit

Dépendances d'exécution

Installation de TeX Live

Installez TeX Live en exécutant les commandes suivantes :

[Attention]

Attention

Si vous voulez mettre à jour texlive vers la version actuelle sur un système plus ancien où des paquets supplémentaires (asymptote, biber. dvisvgm ou xindy) sont installés, vous devrez les réinstaller et corriger votre PATH pour inclure $TEXLIVE_PREFIX.

[Note]

Note

Une installation complète demande que des commandes de texlive soient lancées en tant qu'utilisateur root, donc nous exporterons la variable TEXARCH pour que root l'utilise.

Maintenant, en tant qu'utilisateur normal :

export TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&

patch -Np1 -i ../texlive-20230313-source-security_fix-1.patch &&

mkdir texlive-build &&
cd    texlive-build &&

../configure -C                                   \
    --prefix=$TEXLIVE_PREFIX                      \
    --bindir=$TEXLIVE_PREFIX/bin/$TEXARCH         \
    --datarootdir=$TEXLIVE_PREFIX                 \
    --includedir=$TEXLIVE_PREFIX/include          \
    --infodir=$TEXLIVE_PREFIX/texmf-dist/doc/info \
    --libdir=$TEXLIVE_PREFIX/lib                  \
    --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man   \
    --disable-native-texlive-build                \
    --disable-static --enable-shared              \
    --disable-dvisvgm                             \
    --with-system-cairo                           \
    --with-system-fontconfig                      \
    --with-system-freetype2                       \
    --with-system-gmp                             \
    --with-system-graphite2                       \
    --with-system-harfbuzz                        \
    --with-system-icu                             \
    --with-system-libgs                           \
    --with-system-libpaper                        \
    --with-system-libpng                          \
    --with-system-mpfr                            \
    --with-system-pixman                          \
    --with-system-zlib                            \
    --with-banner-add=" - BLFS" &&

make

Pour tester les résultats lancez : make -k check. Deux tests, psutils.test et eptexdir/wcfname sont connus pour échouer.

Maintenant, en tant qu'utilisateur root :

make install-strip &&
/sbin/ldconfig     &&
make texlinks      &&
mkdir -pv                                $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
install -v -m644 ../texk/tests/TeXLive/* $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
tar -xf ../../texlive-20230311-tlpdb-full.tar.gz -C $TEXLIVE_PREFIX/tlpkg
[Note]

Note

Ne lancez make texlinks qu'une seul fois. S'il est relancé, il peut changer tous les liens symboliques de programmes vers eux-mêmes ce qui les rend inutilisables.

Maintenant installez les fichiers supplémentaires en tant qu'utilisateur root :

tar -xf ../../texlive-20230313-texmf.tar.xz -C $TEXLIVE_PREFIX --strip-components=1

Debian a montré que les scripts python de latex-make fonctionneront avec python3, donc mettez-les à jour pour l'invoquer en exécutant la commande suivante en tant qu'utilisateur root :

for F in $TEXLIVE_PREFIX/texmf-dist/scripts/latex-make/*.py ; do
  sed -i 's%/usr/bin/env python%/usr/bin/python3%' $F
done

Toujours en tant qu'utilisateur root, initialisez le nouveau système (la commande fmtutil-sys --all produira beaucoup de sorties) :

mktexlsr &&
fmtutil-sys --all

Pour permettre à Evince-44.3 ou dvisvgm-3.1 de se lier à libkpathsea.so, en tant qu'utilisateur root, recréez un lien symbolique depuis /usr/lib :

ln -svf $TEXLIVE_PREFIX/lib/libkpathsea.so /usr/lib
[Note]

Note

TeXLive comprend certains fichiers pour ConTeXt mais les sources de celui-ci sont séparées et n'utilisent plus luatex comme dans la version précédente de « mkiv » mais luametatex qui peut être récupéré avec git sur le github de luametatex. LuaMetaTeX utilise meson et ninja, mais il ne convient pas à la structure TeXLive de BLFS.

Cependant, avec un peu de travail supplémentaire, les fichiers « mkiv » peuvent quand même être traités avec les fichiers fournis par texmf.

Les corrections pour utiliser ConTeXt seront supprimées lorsque les sources de texlive auront besoin d'être mises à jour soit pour un correctif de vulnérabilité qui nécessiterait de récupérer des changements de lualatex, soit pour TeXLive 2024. Si vous utilisez ConTeXt dans BLFS vous devriez vous préparer à utiliser le dernier tag github (les liens sont dans le premier paragraphe de cette note). Le construire et l'installer pour qu'il fonctionne avec une installation BLFS de TeXLive ne sera pas un exercice trivial.

Les étapes suivantes, exécutées en tant qu'utilisateur root, créeront mtxrun et context.

sed -e '/local template=\[\[--ini/s/\(primaryflags%\)\(.*\)/\1 --socket --shell-escape \2/' \
 -e '/local template=\[\[%primaryflags%/s/\(primaryflags%\)\(.*\)/\1 --socket --shell-escape \2/' \
  -i $TEXLIVE_PREFIX/texmf-dist/scripts/context/lua/mtxrun.lua &&

mkdir -pv $TEXLIVE_PREFIX/texmf-var/luatex-cache/context/ &&

ln -sfv /$TEXLIVE_PREFIX/texmf-dist/scripts/context/lua/mtxrun.lua \
        /$TEXLIVE_PREFIX/bin/$TEXARCH/mtxrun &&

cat > $TEXLIVE_PREFIX/bin/$TEXARCH/context << EOF
#!/bin/sh
export TEXMF=$TEXLIVE_PREFIX/texmf-dist;
export TEXMFCNF=$TEXLIVE_PREFIX/texmf-dist/web2c;
export TEXMFCACHE=$TEXLIVE_PREFIX/texmf-var/luatex-cache/context/;
$TEXLIVE_PREFIX/bin/$TEXARCH/mtxrun --script context "\$@"
EOF
chmod -v 0755 $TEXLIVE_PREFIX/bin/$TEXARCH/context

Vous pouvez continuer par asymptote-2.86, biber-2.19, dvisvgm-3.1 ou xindy-2.5.1 si vous souhaitez les installer.

Explication des commandes

patch -Np1 -i ../texlive-20230313-source-security_fix-1.patch : cela met à jour les sources de luatex vers la v1.17.0 pour corriger des problèmes de sécurité.

sed -e '/local template (...)' (...)mtxrun.lua : cela change un script de texmf-dist pour que ConTeXt puisse maintenant s'exécuter avec luatex-v1.17.0.

-C : crée config.cache, ce qui améliore significativement le temps d'une construction en parallèle.

--prefix=, --bindir=, --datarootdir=, --infodir=, --mandir= ...  : Ces paramètres assurent que les fichiers installés depuis les sources écraseront les fichiers correspondants installés précédemment par install-tl-unx afin que les méthodes d'installation alternatives de texlive soient cohérentes.

--includedir=, --libdir= ... : Ces paramètres assurent que les bibliothèques et fichiers d'en-tête seront dans les répertoires du texlive de l'année.

--disable-static : Ce paramètre empêche l'installation des versions statiques des bibliothèques.

--enable-shared : Crée les versions partagées de libkpathsea, libptexenc, libsynctex, libtexlua52 et libtexluajit.

--with-system-... : À moins que ce paramètre ne soit utilisé, les versions incluses dans les sources de ces bibliothèques seront compilées statiquement dans les programmes qui les utilisent. Si vous décidez de ne pas installer une bibliothèque recommandée, omettez le paramètre correspondant.

--disable-dvisvgm : Comme indiqué plus haut, la version intégrée de dvisvgm, qui a des fichiers de configuration modifiés, ne peut pas être construite avec les bibliothèques partagées du système.

/sbin/ldconfig : ceci doit être lancé ici pour que make texlinks puisse utiliser kpsewhich.

make texlinks : cela lance le script texlinks.sh pour créer les liens symboliques depuis les formats du moteur. En pratique, plusieurs des cibles comme xetex sont maintenant des binaires séparés et pour ceux la signalera "fichiers existants" ("file already exists").

tar -xf texlive-20230313-texmf.tar.xz -C $TEXLIVE_PREFIX --strip-components=1 : L'archive contient les fichiers pour le répertoire texmf-dist, et à cause de sa taille nous ne voulons pas gaspiller de temps et d'espace à le déballer et ensuite copier les fichiers.

install -v -m644 ../texk/tests/TeXLive/* $TEXLIVE_PREFIX/tlpkg/TeXLive/ : cela met les modules perl TLConfig.pm et TLUtils.pm dans le répertoire où l'installateur binaire les place - c'est au début du PATH perl @INC@ dans texlive quand l'installation utilise les paramètres de configuration précédents. Sans ces modules, texlive est inutilisable.

mktexlsr : Crée un fichier ls-R qui liste ce qui a été installé - c'est utilisé par kpathsea pour trouver les fichiers

fmtutil-sys --all : Ceci initialise les formats TeX, les bases Metafont et les mémoires Metapost.

mkdir -pv $TEXLIVE_PREFIX/texmf-var/luatex-cache/context/ : le script de contexte créé après cette commande ne s'exécutera pas correctement si le répertoire n'est pas présent.

--without-x : utilisez ceci si vous n'avez pas installé Xorg.

Il y a bien d'autres options « --disable » ou « --without ». Certaines d'entre elles comme --without-texinfo sont acceptées mais ne font plus rien, d'autres empêcheront la construction d'un programme — mais l'espace disque gigantesque utilisé pour les éléments liés dans texmf nous font dire qu'il n'y a pas de bénéfice évident à désactiver quelques uns de ces programmes.

Contenu

Programmes installés: Plus de 300 binaires et liens symboliques vers des scripts
Bibliothèques installées: libkpathsea.so, libptexenc.so, libsynctex.so, libtexlua52.so, libtexluajit.so
Répertoires installés: $TEXLIVE_PREFIX/bin, $TEXLIVE_PREFIX/include, $TEXLIVE_PREFIX/lib, $TEXLIVE_PREFIX/texmf-dist

Descriptions courtes

TeX programs

Les programmes inclus dans TeX sont trop nombreux pour les lister individuellement. Référez-vous aux pages HTML et PDF de chaque programme dans les nombreux fichiers html, man ou pdf dans les sous-répertoires de 2023/texmf-dist/. L'utilisation de texdoc pdflatex (remplacez pdflatex avec le nom de la commande) peut aussi être utile.

libkpathsea.so

(kpathsearch) existe pour rechercher un fichier dans une liste de répertoires et est utilisé par kpsewhich

libptexenc.so

est une bibliothèque pour pTeX (publishing TeX) japonnais

libsynctex.so

est la bibliothèque d'analyse SyncTeX (Synchronize TeXnology)

libtexlua52.so

fournit Lua 5.2, modifié pour fonctionner avec LuaTeX

libtexluajit.so

fournit LuaJIT, modifié pour fonctionner avec LuaJITTeX