Aller au contenu

Posts from the ‘Linux’ Category

9
nov

Trier et supprimer les doublons d’un fichier sous Linux

TerminalDans le cadre du débuggage d’un programme C, j’ai été amené à écrire dans un fichier plus de 5 millions de valeurs numériques dans le but de les trier ensuite et de supprimer les doublons (« Ah le mec qui debug avec des printf()! » – Ouai ben des fois y’a que ça d’efficace!) . Une fois ce fichier généré, soit environ 40Mo, je me suis posé la question de l’outil à utiliser pour effectuer les opérations dont j’avais besoin. J’ai pensé à plusieurs choses :

  • Ouvrir le fichier avec LibreOffice Calc mais il se trouve que celui-ci est limité à un peu plus de 100 000 lignes et ne permet donc pas d’exploiter mon fichier.
  • Insérer en base de données les valeurs et effectuer les opérations en SQL. Problème : Il faut une base de données à disposition d’une part et si c’est le cas, MySQL via PhpMyAdmin refuse d’importer le fichier car il est, semble-t-il, trop volumineux.
  • Écrire un programme qui lit le fichier, stocke toutes la valeurs dans un tableau et effectue les opérations nécessaires. Seulement voilà, on n’a pas forcément l’envie ni le temps d’écrire un programme pour un traitement aussi commun.

Bref, c’est là qu’intervient Linux et la puissance des outils qui lui sont associés. Dans un terminal :

$ sort -g mon_fichier | uniq > mon_nouveau_fichier

C’est aussi simple que ça! Et le temps d’exécution est très raisonnable :

$ time sort -g mon_fichier | uniq > mon_nouveau_fichier 
 
real	0m8.013s
user	1m0.326s
sys	0m0.403s

Quelques brèves explications :

  • sort -g permet le tri en prenant l’ordre des valeurs numériques et pas l’ordre alphanumérique classique. Sans cette option, on aurait un résultat de ce type : 1, 10, 100, 1000, 11, 110, 1110, …
  • uniq permet de supprimer les doublons et de renvoyer les valeurs uniques.

Certes ce n’est pas quelque chose dont on a besoin tous les jours mais ça permet de montrer encore une fois la diversité et la puissance des outils fournis sous Linux. Et ça encourage à chercher du côté de ces petits utilitaires avant de tenter des choses improbables ou de réinventer la roue…

Manuel de sort
Manuel de uniq

EDIT : Il est aussi possible d’effectuer le tout (tri + suppression des doublons) en ajoutant -u au sort. On aura donc sort -gu mon_fichier > mon_nouveau_fichier. Au niveau du temps d’exécution il n’y a aucune différence et le résultat est identique. Merci AP pour l’info!

28
oct

Mes premières impressions sous Arch Linux

Arch LinuxJ’ai reçu la semaine dernière mon nouveau matériel professionnel à savoir un Dell Latitude E6510 avec station d’accueil et un écran supplémentaire pour du dual sreen. J’en profite d’ailleurs pour souligner qu’il est possible pour cette gamme de commander une machine sans OS! Bref, après un petit moment d’hésitation, j’ai décidé de me lancer dans l’aventure Arch Linux. Je suis pourtant utilisateur d’Ubuntu depuis 5 ans environ. Mon serveur et mon ordinateur fixe personnels tournent d’ailleurs encore avec cette distribution. Je vais tenter dans un premier temps de vous expliquer brièvement les facteurs de ce changement. Puis je tâcherai de faire un bilan de ces 10 premiers jours sous Arch!

De Ubuntu à Arch Linux

Il y a plusieurs raisons qui m’ont fait choisir Arch Linux comme nouvelle distribution. Premièrement, ça fait un moment que j’en entend parler et à chaque fois en bien. Ensuite, je suis suffisamment curieux pour oser me lancer! Il y a aussi le fait qu’Arch Linux est réservé à des utilisateurs avancés et c’est quelque chose qui me plaît bien (on est totalement maître de son système et ça flatte l’ego :-D). Le principe de rolling release m’a aussi beaucoup tenté. Enfin -troll inside- les derniers choix faits par Canonical ne m’ont pas vraiment convaincu ou en tous cas ne répondent pas à mes attentes (plus orienté réseaux sociaux, ajout de logiciels propriétaires dans la logithèque, etc…). Attention, je ne fais pas le procès d’Ubuntu! Si le libre en est là où il est aujourd’hui c’est, je pense, en grande partie grâce à Ubuntu qui a su le démocratiser un peu plus. Quoi qu’il en soit, pour toutes ces raisons et pour d’autres encore, j’ai tenté l’expérience Arch!

L’installation

Pour commencer, je suis parti sur l’installation par le net. L’iso à télécharger fait ainsi moins de 200Mo et tous les paquets nécessaires sont récupérés durant le processus d’installation. Chose importante, Arch Linux ne contient rien à la base (Pas d’interface graphique par exemple). Il vous faudra tout installer et c’est ça le principal atout de cette distribution selon moi. Quelques précisions pour ceux qui voudraient s’y essayer :

  • Le mieux est de suivre ce tutoriel en français très bien fait.
  • Ne mettez pas la swap en premier sur le disque (sur sda1). Ça ne lui plaît pas du tout! Pour ma part, j’ai découpé mon disque de cette manière :
    Partitions
  • Enfin pour le choix du serveur à utiliser pour récupérer les paquets, choisissez soit celui de archlinux.org (lent mais fonctionnel), soit un en fonction de cette page. Lors de ma première tentative d’installation, j’en ai choisi un au hasard et il se trouve qu’il ne possédait pas la moitié des paquets…

Je ne vais pas détailler le processus d’installation. Des tutoriels font ça très bien et le wiki d’ArchLinux est on ne peut plus complet. Ce qui m’a pris le plus de temps a été la configuration de Xorg, dont l’ex-fichier xorg.conf est maintenant découpé en plusieurs fichiers dans /etc/X11/xorg.conf.d/. Les deux conseils que je pourrais vous donner c’est de ne pas tenter tout de suite le dual screen, je veux dire pas avant d’avoir installé Xorg correctement, et de bien suivre les conseils donnés dans le wiki (ici et ). Une fois que vous aurez installé un gestionnaire de bureau (Gnome par exemple) et si vous avez choisi d’utiliser les drivers de carte graphique propriétaires pensez qu’ils sont installés avec des outils qui génèrent les fichiers de configuration du serveur X à votre place (NVIDIA X Server Settings ou Catalyst Control Center). En revanche, ils génèrent encore le xorg.conf mais à priori, il suffit juste de le renommer et de le déplacer au bon endroit :

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.d/10-monitor.conf

Premières impressions

Voilà 10 jours que j’utilise quotidiennement Arch Linux et je dois dire que j’en suis très satisfait. Alors certes, l’installation est longue (j’y ai passé une journée) puisqu’il faut vraiment tout installer mais il faut prendre en compte qu’Arch Linux ne se réinstalle pas. Le système de rolling release assure d’avoir toujours une distribution à jour et donc pas de mises à jour de versions importantes. La documentation est très fournie et pour peu qu’on soit à l’aise avec la ligne de commande, ça passe tout seul. Une fois que tout est en place c’est impeccable. On est maître de tout et ça, pour quelqu’un qui n’a pas peur de mettre un peu les mains dans le cambouis, c’est fantastique! Côté gestionnaire de bureau, j’ai fait le choix de Gnome avec le thème Equinox et le jeu d’icône Faenza (Merci Nicolargo ;)). Enfin, pour terminer sur le bon côté de la chose, le gestionnaire de paquet, pacman, est vraiment très puissant et les paquets AUR sont une source inépuisable de logiciels.

Seulement voilà! Tout n’est pas rose sous Arch Linux. Il y a quand même quelques petits inconvénients. Premièrement, c’est un peu « roots ». Pour quelqu’un qui n’a pas envie de se prendre la tête, ce sera vite décourageant. Une installation d’Ubuntu prend maintenant une heure maximum. Une installation d’Arch Linux (j’entends par là le système, l’ajout d’interface graphique, les paquets de base et tout et tout…) prend nettement plus de temps, en tous cas la première fois. Mais on apprend beaucoup sur le fonctionnement de son système et ça c’est inestimable! Deuxièmement, le système de rolling release choisi par Arch Linux a aussi ses inconvénients. Deux exemples issus de mon expérience : la mise à jour vers la toute dernière version de Thunderbird m’a obligé à fouiller sur le net pour trouver une version de Lightning (agenda) compatible. La version proposée via l’interface d’installation de modules de Thunderbird ne l’était plus… Ensuite une mise à jour « buggée » d’Empathy m’a privé quelques heures de messagerie instantanée. Heureusement, ce sont des choses qui sont très vite corrigées et ne pose finalement pas tant de problèmes que ça. Troisièmement, il y a des automatismes à acquérir. Notamment avec le passage de apt-get à pacman. Ce dernier suivant une logique qui me dépasse quant au nom de ses arguments. Petit comparatif :

Actionapt-getpacman
Installer un paquetapt-get install _paquet_pacman -S _paquet_
Installer les mises à jourapt-get update
apt-get upgrade
pacman -Suy
Supprimer un paquet et ses dépendancesapt-get autoremove _paquet_pacman -Rs _paquet_

Il faut avouer que c’est spécial… Mais après quelques heures d’utilisation ça ne pose plus vraiment de problèmes. Enfin, et ce n’est pas tant la faute d’Arch Linux que des constructeurs de matériel, il est parfois difficile de trouver les pilotes pour certains périphériques. Je pense en particulier à la webcam incrustée dans l’écran du E6510 que je n’ai toujours pas réussi à faire fonctionner… La documentation technique de chez Dell ne m’a pas permis de déterminer quel pilote installer. Une Ubuntu, par exemple, détectera ce type de matériel et installera les pilotes nécessaires.

Conclusion

Je n’utilise Arch Linux que depuis 10 jours donc ce n’est pas encore très facile de se faire un avis mais je suis pour le moment très satisfait. Je n’exclue pas de passer également mes machines personnelles sous cette distribution. Il y a certes quelques couacs de temps à autre mais c’est un moindre mal comparé à la satisfaction qu’apporte un système stable, à jour et dont on est complètement maître. Qui plus est, le système étant « vide » au départ on installe vraiment que ce dont on a besoin, ce qui rend la distribution très légère et réactive.

PS : Si certains sont tentés de passer sous Arch Linux, n’hésitez pas à poser vos questions dans les commentaires. J’en ai eu pas mal moi-même, notamment pour les fichiers de configuration type rc.conf ou pacman.conf, donc je pourrais peut-être y répondre.

26
oct

Nouveau pilote ATI Catalyst 10.10 pour Linux

Carte GraphicJe fais suite à cet article sur le problème rencontré par certains avec les pilotes ATI Catalyst 10.09 et le noyau 2.6.32-25 dans lequel j’avais promis à un lecteur de publier un article dès qu’une nouvelle version de ce driver serait disponible. Et bien c’est le cas depuis 4 jours maintenant. Cette version semble corriger le problème. Le tout est téléchargeable à cette adresse (même fichier pour système 32 ou 64 bits). Ensuite l’installation se fait sans problème de cette manière :

$ sudo sh ati-driver-installer-10-10-x86.x86_64.run
[sudo] password for login:
Created directory fglrx-install.6JfbL5
Verifying archive integrity... All good.
Uncompressing ATI Catalyst(TM) Proprietary Driver-8.783.......
.....................................................................................
.....................................................................................
============================================
 ATI Technologies Catalyst(TM) Proprietary Driver Installer/Packager
============================================
Detected configuration:
Architecture: x86_64 (64-bit)
X Server: X.Org 7.5 64-bit
loki_setup: directory: (null)
Removing temporary directory: fglrx-install.6JfbL5
$

Durant le processus, vous pouvez à priori laisser toutes les options proposées par défaut.
Un reboot plus tard et tout refonctionne parfaitement, comme avant ;-). Si vous rencontrez malgré tout quelques soucis, je vous publie mon fichier /etc/X11/xorg.conf généré par le processus d’installation. Il est valable pour une carte radeon HD et pour un seul écran :

# xorg.conf (X.Org X Window System server configuration file)
 
Section "ServerLayout"
	Identifier     "aticonfig Layout"
	Screen      0  "aticonfig-Screen[0]-0" 0 0
EndSection
 
Section "Module"
EndSection
 
Section "Monitor"
	Identifier   "Configured Monitor"
EndSection
 
Section "Monitor"
	Identifier   "aticonfig-Monitor[0]-0"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Generic Autodetecting Monitor"
	Option	    "DPMS" "true"
EndSection
 
Section "Device"
	Identifier  "Configured Video Device"
	Driver      "radeonhd"
	Option	    "DRI"
EndSection
 
Section "Device"
	Identifier  "aticonfig-Device[0]-0"
	Driver      "fglrx"
	BusID       "PCI:2:0:0"
EndSection
 
Section "Screen"
	Identifier "Default Screen"
	Device     "Configured Video Device"
	Monitor    "Configured Monitor"
EndSection
 
Section "Screen"
	Identifier "aticonfig-Screen[0]-0"
	Device     "aticonfig-Device[0]-0"
	Monitor    "aticonfig-Monitor[0]-0"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection
20
oct

Gestion des chemins dans le terminal avec pushd et popd

TerminalOn a beau être un fervent utilisateur du terminal, on découvre régulièrement de nouvelles fonctionnalités qui nous font gagner du temps et qui nous paraissent finalement indispensables. Parmi elles, je viens juste d’apprendre l’existence des commandes pushd et popd; le « d » final faisant référence à « directory ». Ces deux commandes servent à gérer une pile de chemins. La première ajoute au dessus de la pile le chemin courant puis le chemin passé en paramètre et se rend à ce dernier. La seconde dépile le premier élément et se rend au nouveau premier élément. Un exemple concret de navigation classique depuis le terminal :

login@ubuntu:~/Documents/blog/articles$ cd /var/log
login@ubuntu:/var/log$ do-something-amazing
login@ubuntu:/var/log$ cd ~/Documents/blog/articles
login@ubuntu:~/Documents/blog/articles$

En utilisant maintenant pushd et popd :

login@ubuntu:~/Documents/blog/articles$ pushd /var/log
# ici est affiché l'état de la pile en partant du haut de celle-ci
/var/log  /home/login/Documents/blog/articles
login@ubuntu:/var/log$ do-something-very-amazing
login@ubuntu:/var/log$ popd
login@ubuntu:~/Documents/blog/articles$

Le but à terme est donc d’utiliser autant que possible pushd à la place de cd de façon à gérer un historique de parcours de répertoires. Il est intéressant aussi de noter que la pile n’est évidemment pas limitée à deux éléments! Ainsi, deux pushd d’affilée permettront de revenir en arrière d’autant. Enfin, une utilisation pratique peut être de faire :

login@ubuntu:~/Documents/blog/articles$ pushd .
~/Documents/blog/articles  ~/Documents/blog/articles

Ainsi, vous pouvez naviguer où bon vous semble le temps d’effectuer une autre tâche (avec des cd) et revenir quand nécessaire dans ce répertoire grâce à un popd. Dernière chose, la commande dirs permet de fournir l’état de la pile et d’en gérer quelques aspects (la vider par exemple).

19
oct

Mémo : comment « débannir » une IP bloquée par fail2ban?

Quand on a son serveur personnel, fail2ban fait partie des indispensables à installer. Ce démon scrute les logs (que ce soient les logs ssh, apache, etc…) à la recherche des tentatives de connexion infructueuses et peut ainsi bannir une IP si nécessaire. Concrètement, dans le cas d’une tentative de connexion par ssh qui échouerait 3 fois d’affilés (ces paramètres sont configurables), l’IP de la machine à l’origine de ces tentatives aura droit à une belle règle iptable de façon à lui bloquer complètement la connexion via le port 22 pour une durée donnée (5 minutes ou 3000 ans, c’est vous qui choisissez!). Bref, pour vous donner une idée, sur mon serveur je bloque en moyenne 5 IP par jour. Les tentatives sont faites en général via ssh avec des logins comme « root » ou « login » et des mots de passes évidemment faux!

Quoi qu’il en soit, il peut arriver qu’une IP vous appartenant soit bloquée. Ça peut arriver par exemple dans le cas où la connexion à ssh via login/password est activée (et pas uniquement par clé publique/privée) et où vous tentez de vous connecter à votre serveur depuis le boulot en vous trompant de login parce que vous en avez à la pelle vu le nombre de machines que vous utilisez. Du coup, vous tentez 3 fois votre mot de passe sans vous apercevoir que votre login n’est pas bon… et hop! Banni pour un an! (True story!)

Il devient alors pratique, une fois rentré à la maison, de se « débannir », de bloquer la connexion ssh via login/password et d’ajouter sa clé publique pour ne plus avoir de soucis. Mais comment se débannir? Comme ceci :

Admettons que vous ayez été banni à partir de tentatives infructueuses de connexion à ssh. Pour lister les IP bannies, il vous faudra lancer dans un premier temps la commande suivante :

$ sudo iptables -L fail2ban-ssh
Chain fail2ban-ssh (1 references)
target     prot opt source               destination
DROP 0 -- 66.249.92.104 anywhere
DROP 0 -- 91.189.90.40 anywhere
DROP 0 -- 207.46.170.123 anywhere
RETURN     all  --  anywhere             anywhere

Bien que la « mise en page » ne le laisse pas paraitre, il s’agit ici d’un tableau dont les en-têtes sont « target », « prot », … Il suffit alors de noter à quelle ligne du tableau apparait votre adresse IP. Considérons que vous souhaitez débloquer 91.189.90.40. Cette IP apparait à la ligne 2. Il ne reste plus qu’à exécuter la commande suivante :

$ sudo iptables -D fail2ban-ssh 2

Votre IP sera bien supprimée des règles iptables, vous autorisant à nouveau à vous connecter en ssh!

6
oct

Mise à jour des drivers ATI Radeon HD sous Linux (kernel 2.6.32-25)

Carte GraphicMise à jour : Nouveau pilote ATI Catalyst 10.10 pour Linux

Je ne suis visiblement pas le seul puisque les forums grouillent de posts à ce sujet : depuis la mise à jour du noyau linux vers sa version 2.6.32-25, le pilote propriétaire permettant de gérer les cartes ATI Radeon HD (4870 dans mon cas) ne semble plus fonctionner. J’ai par exemple eu droit à ce message lors de mes tentatives de réinstallation du pilote Catalyst 10.9 :

DKMS part of installation failed. Please refer to /usr/share/ati/fglrx-install.log for details

Et des redémarrages qui aboutissaient soit sur un écran noir, soit sur un Linux capricieux et lent dès qu’il fallait afficher le moindre élément graphique (page web par exemple)…

Je n’en connais pas la raison mais j’ai découvert ce matin une solution… fournie par AMD en personne. En effet, une version modifiée du pilote a été publiée il y a quelques jours à cette adresse :

http://support.amd.com/us/kbarticles/Pages/GPU83ATICatalystLinuxHotfix.aspx

Autant dire que ce n’est pas simple à trouver (enfin moi, en tous cas, j’ai cherché un moment!) d’où le but de ce post.
Pour l’installation rien de plus simple. Ouvrez le lien fourni précédemment et téléchargez le zip proposé. Puis dans le dossier dans lequel vous l’avez enregistré :

$ unzip catalyst_10.9_linux_hotfix_sep27.zip
$ cd fglrx-8.771.2/
$ sudo sh ati-driver-installer-8.771.2-x86.x86_64.run

Et suivez les instructions. A priori, les options proposées par défaut n’ont pas besoin d’être changées.
Un redémarrage plus tard, vous devriez retrouver un Linux au top!

29
sept

Introduction à DocBook sous Linux

Parce qu’il n’y a pas que le LaTeX pour écrire de bons documents, je vais vous présenter rapidement les bases de DocBook 5.0. Mais d’abord, qu’est-ce que DocBook?

DocBook

DocBook peut se résumer dans un premier temps à un schéma XML définissant un standard de création de documents (concrètement un DTD, un XSD, …). Il offre un grand nombre de balises pour écrire un document. C’est un « format » très utilisé pour les documentations de projets open-source par exemple. Par abus de langage, nous parlerons de « fichier DocBook » durant le reste de cet article pour parler d’un fichier XML écrit en suivant le schéma DocBook.

Du fait qu’il soit standardisé, un même fichier DocBook peut servir de base à plein de rendu différents (HTML, PDF, …).

Enfin, à la base de DocBook, il y a le célèbre éditeur d’ouvrages consacrés à l’informatique : O’Reilly (qui a malheureusement mis la clé sous la porte…).

Créer son premier document

Nous allons donc créer notre premier document à base de DocBook. Pour commencer, il faut installer le paquet suivant :

$ sudo apt-get install docbook-xsl-ns

Ce paquet ajoute des fichiers XSL qui sont des feuilles de style pour document XML. Elles permettent, à partir d’un fichier basé sur DocBook, de lui appliquer un style pour un rendu spécifique. C’est en quelque sorte le même principe que le CSS appliqué au HTML.

Dans un premier temps, nous allons écrire un fichier XML, essai.xml, basé sur le schéma DocBook.

<?xml version="1.0" encoding="UTF-8"?>
 <article version="5.0" xmlns="http://docbook.org/ns/docbook">
   <title>Premier document DocBook</title>
   <articleinfo>
     <author>
       <firstname>John</firstname>
       <surname>Doe</surname>
     </author>
     <copyright>
       <year>2010</year>
       <holder>One More Blog</holder>
     </copyright>
   </articleinfo>
   <sect1>
      <title>Section de premier niveau</title>
      <para>
        Ce texte est dans un paragraphe.
      </para>
      <itemizedlist>
        <listitem>
          premier item d'une liste;
        </listitem>
        <listitem>
          et le second item.
        </listitem>
      </itemizedlist>
   </sect1>
 </article>

Les noms des balises font que le code est très compréhensible et, du coup, rapide à intégrer. Ce petit morceau de code n’est qu’un aperçu minime de ce qu’il est possible de faire avec DocBook. Bref, nous allons maintenant appliquer à ce fichier un style afin de créer un rendu. En HTML d’abord, puis en PDF.

$ xsltproc -o essai.html /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/xhtml/docbook.xsl essai.xml

La syntaxe est très simple. On spécifie le nom du fichier en sortie grâce à l’option -o. On donne ensuite une feuille de style XSL et le fichier XML en entrée. Le résultat est le suivant :

Exemple DocBook HTML

Exemple DocBook en HTML

Un peu comme en LaTeX, tout est géré. Une table des matières est générée en fonction des sections et sous-sections avec les liens qui vont bien. Des id et class sont ajoutés à toutes les balises HTML de façon à éventuellement rajouter une feuille de style, …

Nous allons maintenant, à partir du même code XML, générer une version PDF de ce DocBook. Cependant, cela nécessite l’installation de quelques outils supplémentaires. Dans un premier temps, nous allons ajouter les feuilles de styles prévue pour le PDF :

$ sudo apt-get install docbook-xsl-doc-pdf

Il nous faut ensuite récupérer l’utilitaire FOP (Formatting Objects Processor). Il s’agit d’un programme écrit en Java qui permet de générer entre autres des fichiers PDF à partir de XML et XSD. Cet utilitaire est présent dans les dépôts d’Ubuntu – et des autres distributions j’imagine – mais dans sa version 0.95. Or, est sortie depuis quelques mois une version 1.0 plus aboutie. Nous allons donc récupérer cette version et y ajouter une librairie, Offo, qui gère les découpages de mot (hyphenation ou trait d’union si fin de ligne) et qui évitera des erreurs lors de la génération du document.

$ wget http://apache.crihan.fr/dist//xmlgraphics/fop/binaries/fop-1.0-bin.tar.gz
$ tar -xvzf fop-1.0-bin.tar.gz
$ cd fop-1.0/
$ wget http://freefr.dl.sourceforge.net/project/offo/offo-hyphenation/1.2/offo-hyphenation-fop-stable_v1.2.zip
$ unzip offo-hyphenation-fop-stable_v1.2.zip
$ cp offo-hyphenation-fop-stable/fop-hyph.jar lib/

Lançons maintenant la création de notre document PDF :

$ ./fop -xml ../essai.xml -xsl /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/fo/docbook.xsl -pdf ../essai.pdf

Là encore c’est très simple. L’option -xml doit être suivie du fichier DocBook, l’option -xsl d’une feuille de style spécifique au PDF et enfin la dernière option défini le fichier en sortie. Le résultat est très satisfaisant : PDF Icon

Ce n’est là qu’un tout petit aperçu de ce qu’il est possible de faire avec DocBook. Comme pour LaTeX, il existe plusieurs classes (ici nous avons testé la classe article) pour différents usages. Je vous laisse fouiller un peu et trouver votre bonheur dans la documentation. Je vous propose quelques sites intéressants qui d’une part m’ont aidé à écrire ce premier article sur le sujet et qui d’autre part proposent de la documentation de qualité pour approfondir tout ça :

11
août

Mettre à jour la liste de boot de Grub 2

Linux ConfPour peu qu’on ait un dual-boot géré par Grub 2, la liste des noyaux proposée au démarrage s’allonge au fur et à mesure des nouvelles versions. Dans la version précédente de Grub, l’édition du fichier /boot/grub/menu.lst permettait de personnaliser cette liste et en particulier de supprimer de l’affichage les noyaux antérieurs pour ne garder par exemple que les deux derniers.

Grub 2, lui, génère automatiquement cette liste en fonction des versions du noyau présentes dans /boot. Du coup, pour s’éviter une liste à rallonge au démarrage, la procédure est la suivante :

  1. Créez dans /boot un dossier old
    $ sudo mkdir /boot/old
  2. Déplacez les anciennes versions des noyaux pour ne garder que la dernière (celle fournie par uname -r), le memtest et éventuellement l’avant-dernière version par sécurité. Dans la commande suivante, nous ne garderons que la dernière version du noyau et le memtest :
    $ sudo mv `find /boot -maxdepth 1 -type f ! -name *$( uname -r )* ! -name memtest*` /boot/old

    Petite explication : on déplace (mv) les fichiers trouvés (find) dans /boot en spécifiant :

    • -maxdepth 1 pour ne parcourir que /boot et pas les dossiers sous-jacents
    • -type f pour ne trouver que des fichiers (pas de dossier)

    On ajoute ensuite des ! -name qui permettent de tout sélectionner hormis le(s) fichier(s) déduit(s) du paramètre. On spécifie donc qu’on exclu le memtest mais aussi tous les fichiers contenant dans leur nom la version courante du noyau (d’où le *$( uname -r )*).

    Pour conserver par exemple la version 2.6.32-23 du noyau, il suffit de rajouter après le memtest* quelque chose comme ! -name *2.6.32-23*.

  3. Mettez à jour la configuration de Grub
    $ sudo update-grub

Un redémarrage devrait vous permettre d’admirer le résultat! Il ne reste plus qu’à mettre tout ceci dans un script et l’exécuter quand nécessaire.

4
août

Ajouter ou mettre à jour un package LaTeX manuellement (texlive)

Cet article fait en particulier suite à celui concernant la création de son CV en LaTeX avec moderncv. Pour ceux d’entre vous qui ont essayé, vous êtes probablement tombé sur un os en tentant d’ajouter votre page web dans vos coordonnées :

\documentclass[10pt,a4paper]{moderncv}
% .....
\homepage{www.francoistessier.info/blog}

Une erreur sur cette balise empêche la compilation. En y regardant de plus près, on peut s’apercevoir dans /usr/share/doc/texlive-latex-extra-doc/latex/moderncv/CHANGELOG.gz (pour une installation de texlive sous Ubuntu) que la version installé de moderncv est la 0.7. Or, il y a eu quelques mises à jour depuis (version 0.11) permettant entre autres d’utiliser la balise /homepage{} comme dans l’exemple fourni par l’auteur. Mais comment utiliser la dernière version?

Une solution consisterai à écraser la version actuelle par la nouvelle. Certes, ça semble efficace mais c’est trop « risqué », pas propre, et on perdrait cette modification à la prochaine mise à jour de texlive.

Heureusement pour nous, LaTeX a tout prévu! Il existe en effet une variable TEXMFHOME dans sa configuration qui correspond en général au chemin du dossier $HOME/texmf. Ce dossier, s’il existe, est parcouru par LaTeX lors de la compilation d’un document pour y chercher l’existence de la classe utilisée. Deuxième point important, c’est la classe trouvée dans ce dossier (en suivant une arborescence précise), si elle existe, qui est choisie en priorité pour compiler le document. Donc pour utiliser, par exemple, la dernière version de moderncv, on procèdera de cette façon :

  1. On exécute dans un premier temps la commande suivante pour connaître le dossier correspondant à la variable TEXMFHOME :
    $ texconfig conf | grep TEXMFHOME
    TEXMFHOME=/home/login/texmf
  2. En fonction du repertoire fourni précédemment, on crée l’arborescence dont à besoin LaTeX pour trouver et utiliser notre package :
    $ mkdir -p /home/login/texmf/tex/latex
  3. On y copie le package téléchargé et décompressé
    $ cd /home/login/texmf/tex/latex
    $ wget http://mirror.ctan.org/macros/latex/contrib/moderncv.zip
    $ unzip moderncv.zip
    $ rm moderncv.zip
  4. En fonction de comment est organisé le package, il sera peut-être nécessaire de faire des manipulations supplémentaires (je pense en particulier aux packages contenant des .ins et .dtx) mais je n’ai pas encore été confronté à ce type de cas…
  5. On execute la commande sudo texhash qui mettra à jour la base de données de LaTeX. Cette commande ne semble pas nécessaire dans le cas d’une autre version d’un package existant (par exemple moderncv).

Et voilà! Si tout va bien, le package est accessible et, dans le cas de moderncv, il sera utilisé à la place de la version installée avec texlive.

Pour récupérer la dernière version des packages les plus populaires ou en trouver de nouveau, je vous renvoie vers ce site.

3
août

Environnement LaTeX sous Ubuntu

On m’a fait remarquer il y a peu de temps que j’avais publié un article sur comment écrire son CV en LaTeX sans expliquer comment faire du LaTeX… Remarque très pertinente! Du coup, je vais tenter de faire un rapide tutoriel permettant de se lancer rapidement et sans trop de difficultés dans l’aventure LaTeX. Je laisserai de côté la syntaxe qui est déjà très bien documentée sur de nombreux sites (celui-ci étant mon favori) pour me concentrer plus spécifiquement sur l’environnement nécessaire pour créer et compiler du LaTeX.

Installer LaTeX

Dans un premier temps, nous allons installer les bibliothèques et executables permettant de compiler des documents en LaTeX (que ce soit en DVI, PS ou encore PDF). Le plus simple, si on a un bon giga-octet de libre sur son disque, est d’installer le paquet texlive-full. C’est certes assez lourd en terme d’espace mais on est sûr de ne rien oublier. Si en revanche on veut s’éviter l’installation de la prise en charge du grec ou du letton et économiser ainsi 300Mo je vous conseille plutôt d’exécuter la commande suivante qui n’installera que le nécessaire :

$ sudo apt-get install texlive texlive-lang-french texlive-latex-extra

En fonction de votre connexion, cette installation peut prendre un certain temps. Elle demande en effet de prendre plus de 400Mo dans les dépôts. Une fois ceci fait, vous devriez être en mesure de compiler votre premier document. Pour en être convaincu, créez un document doc.tex avec le premier éditeur de texte venu et écrivez dedans :

\documentclass{article}
\begin{document}
Premier test de compilation d'un document \LaTeX\ en PDF.
\end{document}

La compilation en PDF se fait ensuite simplement de cette manière :

$ pdflatex doc.tex

Dans le même dossier sera créé le fichier doc.pdf (mais aussi des fichiers temporaires que vous pouvez supprimer sans problème à savoir doc.aux et doc.log).

Seulement, écrire un document en LaTeX n’est pas si évident à l’aide d’un simple éditeur de texte. Un peu d’auto-complétion et de compilation automatique peut vite s’avérer pratique si on veut gagner du temps et se consacrer exclusivement au contenu.

Éditeur LaTeX

Je ne connais pas vraiment les différents IDE (si on peut parler d’IDE…) aidant à la rédaction de documents LaTeX donc je n’oserai pas prétendre que ma solution est la meilleure. Cependant, je vais vous faire partager les outils que j’utilise et qui pour le moment me conviennent parfaitement : Eclipse et le plugin TeXlipse.

Installation d’Eclipse

Eclipse est un IDE open-source très connu écrit en Java fonctionnant essentiellement grâce à un système de plugins. Une communauté très active gravite autour de ce projet et propose des modules pour à peu près tout et en particulier pour le LaTeX. J’utilise Eclipse aussi pour coder en Java et en C++. Du coup, pour éviter un nombre incalculable d’applications et parce que je suis familier avec son interface, je l’ai choisi aussi pour le LaTeX.

« Installation » est un bien grand mot puisque Eclipse n’en nécessite justement pas! Pour pouvoir l’utiliser, il faut dans un premier temps récupérer la dernière version disponible à cette adresse :

http://www.eclipse.org/downloads/packages/eclipse-classic-360/heliosr

Une fois l’archive téléchargée, décompressez-là et lancez l’exécutable eclipse. Si vous n’avez pas de JRE (Java Runtime Environment), Eclipse vous le spécifiera puisqu’il ne pourra tout simplement pas démarrer! vous pouvez remédier à ça en installant une implémentation libre du JRE d’Oracle, OpenJDK :

$ sudo apt-get install openjdk-6-jre

Le lancement d’Eclipse devrait ensuite ne plus poser de problèmes. Nous allons maintenant ajouter le plugin aidant à la création de documents LaTeX.

Ajout du plugin TeXlipse

Dans Eclipse, ouvrez Help > Install New Software. Dans le fenêtre qui s’affiche, cliquez sur le bouton Add, ajoutez les informations suivantes puis validez :

  • Name : TeXlipse
  • Location : http://texlipse.sourceforge.net/
Add Repository

Ajouter un "Update site"

Un item « TeXlipse » est alors proposé dans la liste. Cochez-le et cliquez sur Next. Il ne reste plus qu’à suivre les instructions. Quelques questions sont posées durant le processus (accepter les conditions de licence, valider l’installation) auxquelles vous devez bien entendu répondre par la positive.

Un redémarrage d’Eclipse plus tard, le plugin est bien installé. On peut maintenant créer un projet LaTeX. Pour cela, File > New > Project… puis dans la fenêtre qui s’est ouverte, séléctionnez LaTeX project dans le sous-menu de TeXlipse.

new LaTeX Project

Créer un nouveau projet LaTeX

Attribuez un nom au projet et sélectionnez le format de sortie du document une fois le .tex compilé (par exemple PDF). Cet écran permet également de choisir le template qui sera utilisé pour mettre du contenu par défaut dans votre fichier LaTeX. Ça n’a pas grand intérêt si ce n’est de « pré-écrire » la balise \documentclass{}. L’étape suivante permet en particulier de renommer le fichier .tex principal et surtout le fichier de sortie (par exemple CV.pdf).

Et voilà! Il n’y a plus qu’à écrire son document. A chaque sauvegarde d’un fichier du projet dans Eclipse, le LaTeX sera recompilé. Plus besoin de la ligne de commande, tout est automatique. Petite précision pour vous éviter des frayeurs, l’instruction \tableofcontents nécessite une double compilation pour que la table des matières du document soit mise à jour.