A propos d'un bug python.pygments dans debian jessie
Publié par The Troll le 09 11 2017

Coucou les p'tits clous... ça nous rajeunit pas en fait.

Depuis quelques temps j'étais confronté à un bug sous latex pour colorer du code avec le package minted. La compilation foirait et je n'arrivais pas à avoir mon fichier compilé par latex.

Michel, mais comment ça marche, et bien c'est très simple : il faut ajouter

\usepackage{minted}
dans le préambule, et dans le corps du document :

\begin{minted}[linenos=true, bgcolor=lightgray, tabsize=4, gobble=8,
fontfamily=courier, fontsize=\small, xleftmargin=5pt, xrightmargin=5pt]{php}

     print('bonjour monde');

    \end{minted}

Mais dans mon cas, une debian jessie, ça marche po. (il faut bien entendu avoir python pygments installé.)

En regardant dans les logs de latex, on y trouve un truc du genre :


runsystem(pygmentize -l php -f latex -F tokenmerge  -F gobble:n=8 
-P linenos -P "verboptions= ,tabsize=4,fontfamily=courier,fontsize=\small ,xleftmar
gin=5pt,xrightmargin=5pt" -o lex.out.pyg lex.pyg)...executed.

! LaTeX Error: File `lex.out.pyg' not found.
Et si on tente la commande en ligne de commande, nous avons :


herve@dreammachine:~/RV/travaux/latex$ pygmentize -S default -f latex > lex.pyg
Traceback (most recent call last):
  File "/usr/local/bin/pygmentize", line 5, in 
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2876, in 
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 451, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 464, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 639, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Pygments==1.6

Bon, on y voit un peu plus... il attend une version de pygments qui n'est pas celle fournie par la distribution. Donc on télécharge dans wheezy-backports la version 1.6 et on l'installe à la main (en downgradant du coup...)

et TADAAAAAAAA...... à marche.

Pour que cette petite manip permettent à d'autres de gagner un peu de temps, avec peut être les bons termes de recherche pour être trouvé facilement sur le nain Ternet.

Debian linux - Libre - 7 commentaire(s)
commentaire(s)
Posté par smolski le 19 11 2017 à 07:40
« Donc on télécharge dans wheezy-backports la version 1.6 et on l'installe à la main (en downgradant du coup...). » Sans telecharger manuellement, on peut ajouter les sources wheezy-backports, faire un pinning et installer le paquet nécessaire avec les priorités qu'y faut en s'inspirant du tuto : https://debian-facile.org/doc:systeme:apt:pinning . :-D
Posté par herve_02 le 19 11 2017 à 12:16

Cela fait beaucoup de manips pour juste un paquet.

J'ai pris l'habitude de ne plus mélanger les versions dans les dépôts. Ceux qui savent le faire le feront probablement sans se poser de questions, ceux qui ne savent pas... je ne sais pas s'il faut qu'ils jouent aux apprentis sorciers avec les dépôts.

Maintenant comme il n'y avait qu'un seul paquet et qu'il s'installait tout seul sans broncher, j'ai choisi la méthode simple. ;-)

Mais c'est vrai qu'(il est possible de mixer différentes versions avec un peu de doigté et la méthode de pinning, qui mériterait à elle seule une vraie compétence qui n'était pas le but de résoudre ce simple bug - et surtout poster sur le net une solution.

Posté par herve_02 le 19 11 2017 à 12:17
mais merci de cette mise au point, qui permet pour ceusses qui le désirent d'en apprendre encore plus.
Posté par smolski le 24 11 2017 à 07:42
En fait, j'aurai dû ajouter qu'en installant proprement un paquet avec le pinning on bénéficie directement depuis la source appropriée des mises à jour automatiques sur ce paquet (voire et de ses dépendances éventuelles), celles de SÉCURITÉ incluses, sinon à devoir reproduire à chaque fois la manœuvre que tu indiques, ce qui n'est pas à négliger rapport facilité/plus mieux/et...libre. Pour la difficulté, les forum d'entraide du libre sont ouverts jour et nuit et leurs wikis accessibles itou ;-). Amitié, Joel
Posté par herve_02 le 24 11 2017 à 12:34

Alors, je vais être plus clair. Je ne fais jamais d'installation en dpkg et je ne mélange jamais les sources entre distributions, pinning ou pas. j'ai trop de mauvais souvenirs avec debian-multimedia. J'ai fait ce downgrade à la main parce qu'il ne concerne qu'un seul paquet, parce que ce n'est pas un paquet système, parce qu'il n'a aucune dépendance et parce que je ne pouvais pas faire sans. Je n'arrivais plus à compiler les documents de formation que je fais avec latex. Je ne suis pas persuadé (euphémisme) qu'il y ait des mise à jour de sécurité sur le paquet pygmentize 1.6 alors que dans le current stable (strech) nous en sommes à 2.2, que la prochaine stable est sur la rampe et que jessie est déjà en old...

Posté par herve_02 le 24 11 2017 à 12:39

Pour être plus précis, je citerais 2 passages du lien que tu as fournis, et qui me semblent importants :

En faisant joujou avec les fichiers preferences, on peut très rapidement faire quelque chose qu'on ne voulait pas, et qui nous oblige à réinstaller le système.

Attention, ce tuto, c'est le manuel de l'apprenti mauvais-administrateur-système, à utiliser avec modération…

Posté par smolski le 24 11 2017 à 21:20
Je m'incline...
Ajouter un commentaire