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 , , ,

12 Responses to 'TeX Live 2008 à la vanille sur Debian-like'

  1. <

    p>[...] APT de ce

  2. <

    p>[...] On peut installer Kile, TexMaker

  3. Merci Manuel pour ce tutoriel.

    Je viens d’essayer de faire ce que tu dis sous ubuntu 9.04 et… ça ne fonctionne pas :-(

    Récapitulons. J’ai installé TL2008 : tout semble ok (je l’ai installée en root, je n’ai changé aucun des paramètres par défaut).

    J’ai préparé le package texlive-local comme tu le suggères et je l’ai installé. Puis, en utilisateur « normal », je tape latex et là

    Le programme « latex » n’est pas installé actuellement. Vous pouvez l’installer en tapant : sudo apt-get install texlive-latex-base

    Donc, d’une part le path de la texlive n’est pas configuré pour l’utilisateur (je n’ai pas encore lu la doc, ça doit être normal si l’installation est faite en root), mais surtout comment cela se fait que apt ne soit pas au courant que texlive-local a installé (virtuellement) texlive-latex-base (qui est dans ta liste).

    Pour être sûr que texlive-local est bien installé, j’ai fait

    sudo dpkg -s texlive-local

    et résultat

    Package: texlive-local Status: install ok installed Priority: optional Section: misc Installed-Size: 36

    As-tu une idée ?

    Merci

    Christophe

    24 avr 09 at 2:26

  4. Hmm… je pense que le seul problème est que pour terminer l’installation de TeX Live avec les options par défaut, il faut ajouter /usr/local/texlive/2008/bin/x86_64-linux (la fin peut changer selon ton architecture) au PATH. C’est normal, que l’installation soit faite en root ou pas, l’installateur ne sait a priori pas comment régler le PATH sur ta machine, donc il n’essaye pas de jouer au plus malin et il te laisse le faire toi-même (sauf sur windows).

    Ce qui est étrange par contre, c’est qu’en principe à la fin de l’installation, un message assez explicite à ce sujet devrait apparaître. Je viens de tester en faisant une installation minimal pour voir, je ne l’ai pas vu, donc peut-être qu’il y a un problème avec l’installateur.

    Toujours est-il que la solution est d’ajouter le chemin Kivabien au début du PATH. Pour ça, je crois que le mieux est d’aller éditer (en root) /etc/logins.def et /etc/profile (pour couvrir tous les cas : environnement graphique, shell de login ou pas). Il faut changer ENV_PATH et ENV_SUPATH) dans le premier, et les deux lignes définissant PATH dans le deuxième. On commence à comprendre pourquoi l’installateur n’essaie pas de s’en mêler :-)

    Pour le message te conseillant d’installer texlive-latex-base, je pense que de toutes façons il apparaît dès que le commande n’est pas trouvée, et qu’aucune vérification n’est faite pour savoir si le paquets est déjà installé ou fournit par un autre.

    Tiens-moi au courant.

    mpg

    24 avr 09 at 13:30

  5. @mpg Merci de ta réponse.

    mpg :

    Hmm… je pense que le seul problème est que pour terminer l’installation de TeX Live avec les options par défaut, il faut ajouter /usr/local/texlive/2008/bin/x86_64-linux (la fin peut changer selon ton architecture) au PATH. C’est normal, que l’installation soit faite en root ou pas, l’installateur ne sait a priori pas comment régler le PATH sur ta machine, donc il n’essaye pas de jouer au plus malin et il te laisse le faire toi-même (sauf sur windows).

    Ce qui est étrange par contre, c’est qu’en principe à la fin de l’installation, un message assez explicite à ce sujet devrait apparaître. Je viens de tester en faisant une installation minimal pour voir, je ne l’ai pas vu, donc peut-être qu’il y a un problème avec l’installateur.

    Oui. C’est dommage que l’installateur ne soit pas assez explicite sur le sujet. Mais bon, c’est clairement écrit dans la doc que j’ai lue après.

    mpg :

    Toujours est-il que la solution est d’ajouter le chemin Kivabien au début du PATH. Pour ça, je crois que le mieux est d’aller éditer (en root) /etc/logins.def et /etc/profile (pour couvrir tous les cas : environnement graphique, shell de login ou pas). Il faut changer ENV_PATH et ENV_SUPATH) dans le premier, et les deux lignes définissant PATH dans le deuxième.

    Je n’ai pas de PATH dans /etc/profile. Mais je peux le rajouter, si c’est ça qu’il faut. Ne faut-il pas mettre ce genre de chose dans /etc/bash.bashrc ?

    Au passage, où doit-on modifier le chemin pour les manpages et les infopages ? Je pense qu’un petit paragraphe dans la doc sur ce qu’il faut faire dans une ubuntu serait peut-être le bienvenu (vu que c’est quand même une des distributions à la mode).

    mpg :

    Pour le message te conseillant d’installer texlive-latex-base, je pense que de toutes façons il apparaît dès que le commande n’est pas trouvée, et qu’aucune vérification n’est faite pour savoir si le paquets est déjà installé ou fournit par un autre.

    Tu dois avoir raison, en effet.

    Bon, mais il y a un truc qui me chagrine un peu. Pourquoi quand je fais christophe@xenon:~$ sudo apt-get install texlive-latex-base j’obtient Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : dvipdfmx texlive-base texlive-base-bin texlive-common texlive-doc-base Paquets suggérés : perl-tk Les NOUVEAUX paquets suivants seront installés : dvipdfmx texlive-base texlive-base-bin texlive-common texlive-doc-base texlive-latex-base 0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 10,9Mo dans les archives. Après cette opération, 37,2Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? Normalement, aptitude devrait me répondre que ce paquet est déjà installé (comme les 5 autres d’ailleurs).

    Qu’en penses-tu ?

    Merci

    Christophe

    24 avr 09 at 14:21

  6. Pour le PATH, s’il n’y a rien à son sujet dans /etc/profile, n’y touche pas, celui de /etc/logins.def devrait être utilisé (il faut se reloguer pour qu’il prenne effet, au fait). D’ailleurs, je trouve ça anormal que chez moi le PATHsoit spécifié dans /etc/profile. Pour /etc/bash.bashrc, j’ai tendance à dire pareil : s’il y a déjà des indications absolues de PATH, les changer, sinon, ne pas y toucher. Tout le problème avec ses histoires de PATH est qu’a priori on ne veut pas régler seulement celui de son shell, mais aussi celui des applications graphiques.

    Pour MANPATH par contre c’est bien plus simple : vu qu’on ne va lancer la commande man que depuis un shell, il suffit de mettre

    export MANPATH="/usr/local/texlive/2008/texmf/doc/man:$MANPATH"
    

    dans un fichier de démarrage de son shell (typiquement ~/.bashrc).

    Concernant la réaction d’aptitude, je ne suis pas surpris qu’il ne réponde pas que le paquet est installé, puisque concrètement il ne l’est pas, il est juste « fourni » par un autre paquet. Par contre qu’il veuille installer les dépendances est un peu surprenant, mais bon, ça me paraît un peu limite comme cas. En tout cas, ce que je sais, c’est que je n’ai jamais eu de problème en installant des paquets qui dépendent « normalement » de texlive mais qui ne sont pas des composants de texlive.

    mpg

    24 avr 09 at 14:36

  7. @mpg

    mpg :

    Tout le problème avec ses histoires de PATH est qu’a priori on ne veut pas régler seulement celui de son shell, mais aussi celui des applications graphiques.

    Oui, ça doit d’ailleurs être pour cette raison qu’emacs ne trouve toujours pas les exécutables et que j’ai dû bidouiller emacs pour que ça fonctionne.

    @mpg

    mpg :

    Concernant la réaction d’aptitude, je ne suis pas surpris qu’il ne réponde pas que le paquet est installé, puisque concrètement il ne l’est pas, il est juste « fourni » par un autre paquet. Par contre qu’il veuille installer les dépendances est un peu surprenant, mais bon, ça me paraît un peu limite comme cas. En tout cas, ce que je sais, c’est que je n’ai jamais eu de problème en installant des paquets qui dépendent « normalement » de texlive mais qui ne sont pas des composants de texlive.

    C’est vrai. Je n’ai pas eu de problème par exemple avec auctex. Mais cela reste contre-intuitif pour moi.

    Merci encore

    Christophe

    24 avr 09 at 15:41

  8. Bonjour,

    J’utilise la même méthode que vous depuis plusieures années, et je confirme le message de Christophe, ça ne fonctionne plus sous kubuntu 9.04. J’ai essayé de changer la version du package pour passer en 2007.dsfg.1-5 qui est la version utilisée par le système, mais rien n’y fait. De plus, le paquet (le faux créé par nos soins) s’intalle, mais n’apparaît pas dans synaptic ou autre gestionnaire de paquets.

    Vous trouverez ci-dessous le morceau de console qui montre que pour installer kile, le système ne tient pas compte du faux paquet de substitution.

    Olivier V

    meloli@fixe:~/Temp$ equivs-build texlive-equivs dh_testdir dh_testroot dh_clean -k dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb : construction du paquet « texlive-full-equivs » dans « ../texlive-full-equivs_2007.dsfg.1-5_all.deb ».

    The package has been created. Attention, the package has been created in the current directory, not in « .. » as indicated by the message above! meloli@fixe:~/Temp$ ls cur texlive-equivs texlive-full-equivs_2007.dsfg.1-5_all.deb meloli@fixe:~/Temp$ sudo dpkg -i texlive-full-equivs_2007.dsfg.1-5_all.deb dpkg – avertissement : texlive-full-equivs mis à jour de la version 2008-1 vers l’ancienne version 2007.dsfg.1-5. (Lecture de la base de données… 100368 fichiers et répertoires déjà installés.) Préparation du remplacement de texlive-full-equivs 2008-1 (en utilisant texlive-full-equivs_2007.dsfg.1-5_all.deb) … Dépaquetage de la mise à jour de texlive-full-equivs … Paramétrage de texlive-full-equivs (2007.dsfg.1-5) … meloli@fixe:~/Temp$ sudo apt-get install kile Lecture des listes de paquets… Fait Construction de l’arbre des dépendances Lecture des informations d’état… Fait Les paquets supplémentaires suivants seront installés : asymptote asymptote-doc blt dblatex doc-base dvipdfmx dvipng guile-1.8 guile-1.8-libs imagemagick imagemagick-doc kbibtex lacheck latex-beamer latex-xcolor latex2html libfftw3-3 libfreezethaw-perl libkpathsea4 libmldbm-perl libnetpbm10 libsigsegv0 libt1-5 libuuid-perl lilypond lilypond-data lilypond-doc lmodern netpbm perl-doc pgf preview-latex-style prosper psutils python-imaging-tk python-tk tcl8.5 tex-common texlive texlive-base texlive-base-bin texlive-common texlive-doc-base texlive-extra-utils texlive-fonts-recommended texlive-lang-cyrillic texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-math-extra texlive-pictures texlive-xetex tipa tk8.5 xsltproc Paquets suggérés : gv xpdf blt-demo docbook opensp transfig guile-1.8-doc bibtex2html latex2rtf kile-doc auctex libfftw3-dev groff python-imaging-doc python-imaging-tk-dbg tix python-tk-dbg tclreadline perl-tk dvi2tty dvidvi scalable-cyrfonts-tex texpower Les NOUVEAUX paquets suivants seront installés : asymptote asymptote-doc blt dblatex doc-base dvipdfmx dvipng guile-1.8 guile-1.8-libs imagemagick imagemagick-doc kbibtex kile lacheck latex-beamer latex-xcolor latex2html libfftw3-3 libfreezethaw-perl libkpathsea4 libmldbm-perl libnetpbm10 libsigsegv0 libt1-5 libuuid-perl lilypond lilypond-data lilypond-doc lmodern netpbm perl-doc pgf preview-latex-style prosper psutils python-imaging-tk python-tk tcl8.5 tex-common texlive texlive-base texlive-base-bin texlive-common texlive-doc-base texlive-extra-utils texlive-fonts-recommended texlive-lang-cyrillic texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-math-extra texlive-pictures texlive-xetex tipa tk8.5 xsltproc 0 mis à jour, 56 nouvellement installés, 0 à enlever et 4 non mis à jour. Il est nécessaire de prendre 195Mo dans les archives. Après cette opération, 540Mo d’espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? n Annulation.

    Olivier V

    13 sept 09 at 12:42

  9. [...] ou une distribution dérivée tout en satisfaisant le gestionnaire de paquet, je renvoie à un précédent billet. Notez que des paquets debpour TeX Live 2009 seront prochainement disponibles pour Debian (puis ses [...]

  10. J’ai rencontré un problème pour installer lilypond via synaptic. L’installation a retourné un «problème», puis plus moyen de désinstaller lilypond-data (qui était dans un «état incohérent»). Il m’a donc fallu installer le paquet texlive-base puis réinstaller lilypond-data puis désinstaller lilypond-data et enfin désinstaller texlive-base. Je me retrouve avec mon système d’aplomb. J’ai installer lilypond à la main en local et tout fonctionne. Je tenais à signaler ce problème au cas où ça intéresserait d’autre personne. Mis à part ce problème, cette méthode à la vanille est parfaite !!!

    Chupin Maxime

    3 déc 09 at 14:46

  11. Astuce très pratique… Une petite remarque, avec une vieille Ubuntu et TL 2008, elle m’avait provoqué un bug énervant lors de l’installation et/ou la désinstallation de nombreux paquets sous ubuntu à cause d’un problème de version de tex-info qui ne prenait plus le bon nombre d’arguments…

    Je retente avec une ubuntu récente et TL 2010… on verra bien.

    Drébon

    28 oct 10 at 15:42

  12. Oui, le problème de conflit avec install-info est connu. C’est d’ailleurs pour ça que texinfo a été retiré de TeX Live depuis la version 2010. Il ne devrait donc plus y avoir de problème maintenant.

    (Pour les versions antérieures, je signale brièvement la chose sur la page officielle Debian-TeX Live, mais il est vrai que j’avais oublié de la faire ici.)

    mpg

    28 oct 10 at 15:50