TeX Live 2008 à la vanille sur Debian-like
Suite notamment à une discussion sur fr.comp.text.tex, mais aussi pour me
servir d’aide-mémoire, voici une description de mon installation de TeX Live
2008 « à la vanille » (c’est-à-dire la version upstream non empaquetée par
Debian), et plus précisément de comment établir de bonnes relations entre cette
installation locale et la gestionnaire de paquets de Debian.
Premièrement, pourquoi avoir installé une TeX Live nature plutôt que les paquets TeX Live de Debian ? Plusieurs raisons :
- L’équipe TeX de Debian n’a pas encore eu le temps d’empaqueter la version 2008, et j’étais impatient de jouer avec les nouveautés de cette version.
- La version 2008 de TeX Live possède son propre gestionnaire de paquet, et je ne sais pas comment il sera utilisable dans la version Debian de la chose : dans le doute, installer la version nature me paraît raisonnable.
- Une raison personnelle : étant développeur TeX Live, il me paraît naturel d’utiliser la version nature pour mieux la connaître.
Maintenant, le problème qui se pose avec les installations locales, c’est que le gestionnaire de paquets de la distribution n’en est a priori pas au courant, et qu’il faudrait qu’il en tienne compte dans ses calculs de dépendance pour ne pas installer une deuxième version de ce qu’on a déjà installé. (On peut bien sûr choisir d’installer côte à côte une TeX Live de Debian et une nature, mais il faut être sûr de bien contrôler son environnement si on veut éviter les problèmes.)
La solution proposée par Debian tient en un mot : equivs. Ce petit paquet
contient ce qu’il faut pour créer facilement des paquets Debian ne contenant
rien à part des informations de dépendances pour APT. Voyons comment s’en servir
pour créer un paquet texlive-local qui informera APT qu’on a déjà une TeX
Live, merci. On commence par installer equivs et se mettre dans un répertoire
temporaire de travail (je suppose que ~/tmp existe et que c’est là-dessous
qu’on aime travailler). On commence alors par utiliser equivs-control.
# aptitude install equivs
$ mkdir ~/tmp/tl-loc
$ cd !$
$ equivs-control texlive-local
La dernière ligne a pour effet de préparer un squelette fichier de contrôle pour
notre futur paquet. C’est là qu’on va indiquer à quels paquets Debian réels
correspond notre installation locale, grâce à la ligne Provides:. On édite
aussi quelques autres informations au passage (champs Package, Version,
Maintainner et Description) ; le fichier obtenu est le suivant.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: texlive-local
Version: 2008-1
Maintainer: MPG <mpg@roth.elzevir.fr>
Provides: cm-super, cm-super-minimal, context, latex-beamer,
latex-cjk-all, latex-cjk-chinese, latex-cjk-chinese-arphic-bkai00mp,
latex-cjk-chinese-arphic-bsmi00lp, latex-cjk-chinese-arphic-gbsn00lp,
latex-cjk-chinese-arphic-gkai00mp, latex-cjk-common, latex-cjk-japanese,
latex-cjk-japanese-wadalab, latex-cjk-korean, latex-cjk-thai,
latex-sanskrit, latex-xcolor, lmodern, luatex, musixtex, pgf, prosper,
tex4ht, tex4ht-common, texinfo, texlive-base, texlive-base-bin,
texlive-base-bin-doc, texlive-bibtex-extra, texlive-common,
texlive-doc-base, texlive-doc-bg, texlive-doc-cs+sk, texlive-doc-de,
texlive-doc-el, texlive-doc-en, texlive-doc-es, texlive-doc-fi,
texlive-doc-fr, texlive-doc-it, texlive-doc-ja, texlive-doc-ko,
texlive-doc-mn, texlive-doc-nl, texlive-doc-pl, texlive-doc-pt,
texlive-doc-ru, texlive-doc-th, texlive-doc-tr, texlive-doc-uk,
texlive-doc-vi, texlive-doc-zh, texlive-extra-utils, texlive-font-utils,
texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended,
texlive-fonts-recommended-doc, texlive-formats-extra, texlive-full,
texlive-games, texlive-generic-extra, texlive-generic-recommended,
texlive-humanities, texlive-humanities-doc, texlive-lang-african,
texlive-lang-arab, texlive-lang-armenian, texlive-lang-croatian,
texlive-lang-cyrillic, texlive-lang-czechslovak, texlive-lang-danish,
texlive-lang-dutch, texlive-lang-finnish, texlive-lang-french,
texlive-lang-german, texlive-lang-greek, texlive-lang-hebrew,
texlive-lang-hungarian, texlive-lang-indic, texlive-lang-italian,
texlive-lang-latin, texlive-lang-manju, texlive-lang-mongolian,
texlive-lang-norwegian, texlive-lang-other, texlive-lang-polish,
texlive-lang-portuguese, texlive-lang-spanish, texlive-lang-swedish,
texlive-lang-tibetan, texlive-lang-ukenglish, texlive-lang-vietnamese,
texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra,
texlive-latex-extra-doc, texlive-latex-recommended,
texlive-latex-recommended-doc, texlive-latex3, texlive-math-extra,
texlive-metapost, texlive-metapost-doc, texlive-music, texlive-omega,
texlive-pictures, texlive-pictures-doc, texlive-plain-extra,
texlive-pstricks, texlive-pstricks-doc, texlive-publishers,
texlive-publishers-doc, texlive-science, texlive-science-doc,
texlive-xetex, tipa,
Architecture: all
Description: Installation locale de TeX Live.
Installation locale d'une TeX Live nature complete.
C’est presque fini. Maintenant que notre fichier de contrôle est prêt, on peut créer le paquet et l’installer :
$ equivs-build texlive-local
# dpkg -i texlive-local_2008-1_all.deb
(Seule le dernière étape se fait en root ou avec sudo : dans tous mes
exemples, $ ou % représent un shell utilisateur, et # un shell root.)
On peut aussi si on le souhaite sauvegarder le paquet Debian créé :
personnellement, je garde une copie de tous mes paquets créés localement dans
/usr/local/debs.
Enfin, j’ai quand même installé lmodern, et tex-common dont il dépend,
depuis les dépôts Debian : le but est simplement d’enregistrer ces polices au
niveau de defoma et de X11. (Si j’étais un peu moins pataud en fontes, je le
ferais à la main.) Le paquet tex-common ne risque pas d’interférer avec mon
installation : il contient essentiellement des scripts de gestion propres à
Debian.
Je peux ainsi installer (depuis les dépôts Debian) des éditeurs comme Kile ou TeXmaker, voire le module aucTeX pour Emacs (que j’essaierai un jour lointain, quand j’aurai beaucoup de temps) sans qu’Aptitude n’essaie de m’installer le moitié d’une TeX Live Debian en plus comme dépendances.
Mise à jour Cette méthode présente des limitations : si un paquet présente une dépendance versionnée sur un paquet de TeX Live (par exemple, dépend de texlive-foo 2009-1 ou supérieur) alors le paquet virtuel ne sera pas pris en compte. De telles dépendances versionnées se sont présentées par le passé et empêchaient par exemple d’installer Kile sans tirer une foule de paquets texlive Debian avec.
Quand ce cas se présente, je préconise de laisser APT installer ce qu’il veut,
en modérant quand même son appétit en lui faisant n’installer que les
dépendances dures (par opposition aux recommandations), avec l’option de ligne
de commande -o APT::Install-Recommends=0. Dans tous les cas, la TeX Live
installée localement sera la seule utilisée du moment qu’elle arrive en
premier dans le PATH.