Le mpg-blog

LaTeX et autres geekeries

TeX Live 2008 à la vanille sur Debian-like

with 12 comments

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.

Written by mpg

novembre 30th, 2008 at 1:15

Posted in TeX et compagnie

Tagged with , , ,