Premières installations pour le cours Prep’Isima
Table des matières
1. linux
1.1. Choisir sa distribution
https://fr.wikipedia.org/wiki/Liste_des_distributions_GNU/Linux (jetez un coup d’oeil au graphique de généalogie des distributions). Pour les débutants qui ne savent pas quelle distribution choisir, je propose https://ubuntu.com/ (ou peut-être https://getfedora.org/).
Fedora a l’avantage d’accepter les nouveautés plus vite que ubuntu ce qui peut vous simplifier la vie si vous avez du matériel récent et un peu trop exotique (afin de garantir une stabilité importante du système, certaines distributions ne sont pas pressées d’accepter des nouveautés, potentiellement encore fortement buggées).
Une fois à l’aise, vous pourrez passer si vous le désirez à une https://www.debian.org/distrib/index.fr.html, qui a l’avantage d’une stabilité fort appréciée ou au contraire à une distribution en rolling release, avec un paramétrage plus personnalisé comme celui de https://archlinux.org/.
1.2. Installation en ’dual-boot’
Vu le cursus que vous avez choisi, il peut être pertinent de faire une installation à partir de rien, donnant toute sa puissance à Linux. Pour cela,
- Télécharger l’iso de la distribution de votre choix.
- A l’aide de https://rufus.ie/fr_FR.html, copier l’image sur une clef usb de taille suffisante,
- Modifier si nécessaire les paramètres de votre BIOS afin de démarrer sur la clef (là, il y a un florilège de touches possibles pour choisir sur quel support booter, sur la machine sur laquelle je travaille à l’instant, c’est -F8- pendant la séquence de démarrage…)
- Choisir d’installer conjointement avec votre ancien système d’exploitation. Pour ce qui est de la capacité de disque à réserver… cela dépend de vos possibilités, mais je pense qu’une 50aine de Gigas est pertinent. Par la suite, au moment du démarrage il vous faudra choisir les différents systèmes d’exploitation celui que vous désirez utiliser.
1.3. Installation dans une machine virtuelle
Pour ceux que le n’ai pas convaincu de faire un ’dual boot’, vous pouvez bien entendu éradiquer votre ancien système et n’installer que linux… ou installer une machine virtuelle :
- Télécharger l’iso de votre choix.
- Télécharger VmWare ou VirtualBox
- suivre un quelconque tutoriel sur le net, par exemple : https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/37630-installez-linux-dans-une-machine-virtuelle, avec 2 modifications que je juge importantes : essayez de mettre plus de RAM que 1.5Go, au moins 2 si votre machine l’accepte, et surtout, prenez une image de taille variable, avec si possible une taille de base d’au moins 20Go (on veut réellement l’utiliser, et donc il va falloir installer
1.4. Mais, la machine virtuelle peut être dans linux !
Remarque : si vous installez linux avec un ’dual boot’ et que vous avez mis assez de place, vous pouvez installer une machine virtuelle Windows 10 sur Linux, si vous ne jouez pas à des jeux trop exigeants, vous ne devriez même plus avoir envie de lancer réellement Windows.
1.5. WSL
Il est possible dans windows 10 d’installer linux comme partie apparente de ce système, c’est le Windows Subsystem for Linux (WSL). Pour le rendre agréable, il faudra ensuite installer un serveur X (qui permet de ne pas travailler qu’en mode texte), tel que VcXsrv.
1.6. Machines virtuelles
Afin de pouvoir travailler de la façon la plus agréable possible, il est possible d’utiliser une machine virtuelle personnelle fournie par l’ISIMA sur laquelle vous êtes administrateurs. Être administrateur vous permettra d’installer les logiciels de votre choix, et de configurer à votre guise le système d’exploitation.

Pour rappel, il est nécessaire de démarrer la machine virtuelle avant de pouvoir l’utiliser sur guacamole, ou en s’y
connectant via ssh ssh -Y login@nom_machine
, où à l’aide de remmina. Il peut être nécessaire de reconfigurer le
password (vous pouvez mettre celui de l’ENT ici).
1.6.1. Pour remmina
- choisir rdp (remote desktop protocol)
- nouveau profil de connexion
- Name : votre choix
- Group : isima
- Protocol : doit déjà être rempli avec RDP
- Server : vm-etu-login où login est à remplacer par votre login
- Password : vous le mettez ou non…
- Domain : local.isima.fr
- … si besoin, remplissez les option de votre choix …
- Resolution : use client resolution
- Save !!!
- sur l’écran principal, dans les préférences (
CTRL p
), dans l’onglet RDP (tout en bas), cocher ’use client keyboard mapping’ pour conserver votre configuration du clavier. Parfois, cela ne suffit pas (???), il faut alors rechercher dans la liste qui précède cette case à cocher un clavier approprié.
1.6.2. Précautions
Cette machine virtuelle n’est pas ’garantie’, elle peut être effacée, remplacée, modifiée à tout moment. Il est par conséquent important que vos document soient présents dans un endroit fiable, par exemple le répertoire ’shared’.
Une astuce pour disposer aisément de vos fichiers de config si vous utilisez plusieurs machines, est de les placer dans le répertoire ’shared’, et de placer un un lien symbolique vers ces fichiers. Par exemple, pour récupérer une configuration emacs placée dans ’shared’ :
ln -s "~/shared/.emacs.d" "~/.emacs.d"
Évidemment, les risques de perdre beaucoup de votre travail sont quasi nuls, même si votre ordinateur personnel est capturé par des aliens, car il vous est obligatoire de faire des commits et des pushs très régulièrement.
Dans l’éventualité ou le répertoire ’shared’ ne serait pas monté, la commande kinit
permet parfois de résoudre le
problème (essayer au moins trois fois).
1.7. Machines personnelles
Vous pouvez utiliser votre ordinateur personnel, que ce soit avec une distribution Linux ou WSL pour Windows… mais dans tous les cas il vous est demandé de faire de la programmation sous Linux, et non sous Windows.
1.8. Dépannage
Il est possible de se connecter directement sur les machines de l’école, via https://guacamole.isima.fr/.
2. texlive-full (environ 5 Go)
Voici un outil qui prend de la place ! Si vous en manquez, vous pouvez installer une distribution texlive plus légère, cela vous cassera un peu les pieds, car il faudra ajouter les paquets nécessaires au cas par cas, mais cela n’est absolument pas rédhibitoire.
2.1. Au fait, qu’installez-vous ?
Vous installez une distribution \(\LaTeX\), c’est un traitement de texte créé par Leslie Lamport (https://fr.wikipedia.org/wiki/Leslie_Lamport) qui est une sur-couche de \(\TeX\) créé par Donald Knuth (https://fr.wikipedia.org/wiki/Donald_Knuth), je vous invite à lire les pages wikipedia de ces personnages mythiques.
\(\LaTeX\) est un traitement de texte qui n’est pas Wysiwyg (« what you see is what you get ») ce qui va certainement à l’encontre de ce dont vous avez l’habitude. C’est un langage à balise, qui a pour vocation de vous aider à vous concentrer sur le sens plutôt que sur l’apparence. Un débutant n’a pas à se préoccuper de comment le document va être présenté, il doit se concentrer sur l’organisation et la hiérarchisation de son discours [Word, lorsqu’on utilise les styles vise le même but]. Comme le document qui va être construit n’a pas besoin d’être affiché en direct, les algorithmes de mise en page peuvent être différents. Par exemple, l’algorithme qui décide des césures de mots peut prendre en compte le contexte avant de décider où elles doivent s’effectuer (sur un traitement de texte Wysiwig cela pourrait entraîner des oscillations en fonction des nouveaux caractères tapés, et donc une grande gène et une impression de bug).
Il existe une pléthore de greffons pour à peu près toutes les thématiques, et il est assez aisé d’ajouter de nouvelles fonctionnalités. C’est un traitement de texte qui, contrairement à ce que pourra laisser penser votre première heure à l’explorer, est beaucoup plus aisé à utiliser que ses concurrents réputés grand public pour obtenir une qualité satisfaisante.
2.2. Et pourquoi tout le monde ne s’y met pas si c’est si bien ?
Pour des informaticiens, et des scientifiques en général, il est aisé à utiliser, mais il est clairement plus difficile d’accès que Word, en particulier si on n’a jamais programmé. Les premières marches sont hautes et peuvent décourager ; nous avons l’habitude de voir le résultat de nos actions lorsque nous élaborons un document, là, il faudra attendre la compilation et peut-être débugger notre code… Peu de chance qu’il devienne jamais totalement grand public. Il existe des sur-couches Wysiwig, mais elles n’ont jamais réellement percé, elles ne correspondent pas aux attentes des gens qui utilisent \(\LaTeX\).
3. python \(\geq 3.6\)
Il est nécessaire de disposer de Python. Il est agréable, entre autres, pour réaliser aisément des manipulations sur des fichiers (en lieu et place des scripts SHELL). Je ne vous proposerai pas d’apprendre Python dans cette UE, mais il faudrait qu’au cours des deux années de Prep’Isima, vous trouviez le temps de l’apprendre par vous mêmes. J’ai trouvé un cours que je juge excellent sur Python :
- S’inscrire sur https://www.fun-mooc.fr/
- S’inscrire et faire dans sa totalité le cours : Python3, des fondamentaux aux concepts avancés du langage https://www.fun-mooc.fr/courses/course-v1:UCA+107001+session02/info. Lorsque vous l’aurez suivi en totalité (même si c’est dans 1 an), passez à mon bureau afin que je vous conseille d’autres tutos sur des modules particulièrement utiles.
4. doxygen
doxygen est un outil de documentation automatisée. Lorsque vous écrivez du code, vous allez écrire vos commentaires en respectant un certain format (il sera possible pour les choses compliquées d’introduire du markdown). A partir de ces commentaires, doxygen va produire automatiquement une documentation de votre projet.
Installer :
- graphviz*
- doxygen*
5. xcas
Ce logiciel est un logiciel de mathématiques, il résout la quasi totalité des problèmes calculatoires de niveau L1-L2 de façon symbolique et exacte. Il peut également exporter du code \(\LaTeX\) (cela peut vous aider, vous faites vos calculs sur xcas puis vous faites des copier-coller des bouts intéressants pour vos rapports). Une de ses particularités est que ses créateurs ont pris un parti différent de celui que l’on favorise en informatique, il y a plusieurs façons d’exprimer la même chose, chaque commande admettant des synonymes. Il semble certain que si l’on désirait réaliser un gros projet avec ce logiciel, ce parti pris pourrait être dommageable (difficultés de maintenance et de travail en équipes en particulier) mais lorsque l’on désire uniquement tracer une courbe, inverser une matrice ou résoudre une équation différentielle, cela nous permet d’’ inventer` la syntaxe de la commande puis de croiser les doigts en appuyant sur -entrée-… (avec un peu d’habitude, on ’devine’ bien avec une excellente chance de succès).
Installer :
- Se rendre sur https://www-fourier.ujf-grenoble.fr/~parisse/install_fr et choisir la page qui correspond à votre distribution de Linux
- suivre pas à pas les explications…
6. git
Git est un logiciel de suivi de version, il aura sa place dans tous vos projets. Que vous écriviez un roman seul dans votre cave ou que vous travaillez sur un projet à grande échelle, git pourra vous être utile : vous créez de points de sauvegarde de votre travail, vous expérimentez dans des directions multiples, vous fusionner ce qui était bien dans des versions différentes, écrites par des auteurs différents, vous gérez les droits… Avec git, vous avez le droit de changer d’avis ! Ce logiciel https://fr.wikipedia.org/wiki/Git a été créé par Linus Torvalds https://fr.wikipedia.org/wiki/Linus_Torvalds lorsqu’il a développé le noyau Linux. Il est maintenant utilisé dans un nombre croissant de projets, et il semble prendre le pas sur ses concurrents (dont subversion https://fr.wikipedia.org/wiki/Apache_Subversion dont il se distingue en ayant une gestion centralisée lorsque svn fonctionne en mode client-serveur).
Installer :
- git
7. valgrind
Valgrind est une outil qui analyse la mémoire. Il possède différents modules dont :
- memcheck qui permet de vérifier les problèmes d’accès mémoire en
lecture/écriture aberrants ou illégaux. Cela permet en particulier
de repérer :
- la mémoire allouée non libérée, ou libérée plusieurs fois
- la mémoire utilisée en lecture sans avoir été préalablement utilisée en écriture
- la mémoire utilisée sans avoir été réservée
- callgrind qui permet d’analyser le temps passé dans chaque partie du programme ainsi que le graphe des appels. Cela permet au programmeur de repérer les parties de codes qui nécessitent le plus d’effort pour, à temps constant, obtenir le programme le plus efficace possible. Il est à utiliser conjointement avec l’outil de visualisation kcachegrind.
Installer :
- valgrind
- kcachegrind
8. gdb
gdb est un debugger en mode texte, il permet :
- d’arrêter l’exécution d’un programme
- soit à un point donné,
- soit lorsqu’une condition est validée
- d’exécuter un programme instruction par instruction (pas à pas)
- d’examiner et/ou modifier le contenu de variables pendant l’exécution
Il possède une sur-couche graphique ’ddd’
Installer :
- gdb
- ddd
9. emacs
Cet éditeur a été créé par le fondateur du projet gnu, Richard Stallman https://fr.wikipedia.org/wiki/Richard_Stallman. Il est totalement personnalisable et adaptable à tous les types de textes que vous désirerez produire. Faire et refaire le tutoriel fourni dans emacs (une fois par jour au moins pendant une semaine).
Installer :
- emacs (version \(\geq\) 27)
10. vim
Installer vim
, c’est une déclinaison ’moderne’ de vi
. C’est un éditeur extrèmement performant, qui cependant nécessite une phase d’apprentissage avant de permettre des gains de productivité.
Dans emacs, le ’evil mode’ permet de récupérer la puissance des contrôles de vi, et permet alors d’accéder au meilleur des deux mondes :).
Installer :
- vim
11. codingame
codingame.com est une plate-forme vous permettant de vous entraîner sur des petits problèmes de code dans différents langages. Ce type de site se développe de plus en plus, et ce dans des domaines plus ou moins spécialisés, et on peut maintenant voir des Curriculum vitae précisant le score de codingame.
- choisir un navigateur de la famille ’chrome’ (vous pouvez installer par exemple chromium), le site n’offre pas toutes ses fonctionnalités avec les autres navigateurs
- s’inscrire sur le site
- dans ’practice’, choisir ’Classic Puzzle - Easy’
- choisir le puzzle ’The river I’ (https://www.codingame.com/training/easy/the-river-i-)
- dans la barre de gauche, choisir ’settings’
- dans ’use an external code editor’, cliquer ’install the plugin’
- installer les DEUX applis
- retourner sur codingame, rafraîchir la page, retourner dans settings
- cliquer ’use an external code editor : ON’
- créer sur votre système un fichier ’river1.c’ (n’oubliez pas de bien ranger vos fichiers dans des répertoires) et le sélectionner
- par la suite vous aurez la possibilité :
- de downloader le fichier (de chez vous vers codingame)
- d’uploader le fichier (de codingame vers chez vous)
- ouvrir le fichier avec emacs
- lorsque vous sauvegardez sous emacs (à condition de ne pas avoir fermé la fenêtre ’codingame sync’) toutes vos modification sous emacs sont automatiquement reportées sur codingame.
Par la suite, vous pouvez avoir besoin de valgrind, ddd, etc… Pour cela :
- dans codingame, dans la frame de test, vous avez une icône où vous pouvez récupérer tous les tests, sauvegarder celui qui vous intéresse dans un fichier ’test.txt’
- en ligne de commande, après avoir compilé votre fichier, exécuter votre programme en redirigeant l’entrée standard sur le fichier
- vous pouvez également sauvegarder la sortie attendue, rediriger la sortie de votre programme sur un fichier et faire un ’diff’ entre la sortie attendue et votre sortie
12. clang format
clang est un compilateur concurrent de gcc. Il produit un code qui est parfois (de plus en plus rarement) un peu moins optimisé que gcc, mais il s’intègre mieux dans les IDE (integrated development environment), car il conserve un lien plus fort entre le code produit et le code source (ce qui permet de plus facilement associer à une erreur de compilation une coloration du code et des explications). Ici on s’intéresse à clang-format qui permet de formater un code automatiquement afin de lui faire respecter certaines normes (espace ou non de chaque oté d’un comparateur, …). Ainsi on pourra choisir d’utiliser le style Microsoft, IBM, Google, … ou créer son propre style. Cette vidéo présente cet outil.
13. gnuplot
gnuplot est un outil permettant de réaliser des tracés de courbe. Il possède la particularité de s’intégrer de façon particulièrement agréable dans l’environnement Linux.
14. GraphViz
Jusqu’à ce que python devienne si agréable pour les représentations de graphe avec des modules comme networkx, graphViz a longtemps tenu (et tient encore souvent) une place prépondérante. Il est facile à utiliser, et possède pour les cas standards une syntaxe agréable. Il possède des interfaces pour de multiples langages que ce soit du C ou du Python, ou… C’est un outil qu’il est bon de maitriser, tant il est posible de l’utiliser avec profit dans des situations variées, ce qui apporte un peu de positivité à l’aphorisme de Maslow :
Si le seul outil dont vous disposez est un marteau,
tous les problèmes ressemblent à des clous.
15. Ditaa
Ditaa permet de transformer un graphique fait en ASCII en un ’vrai’ graphique. L’exemple de la page de ce projet est suffisamment parlant :
+--------+ +-------+ +-------+ | | --+ ditaa +--> | | | Text | +-------+ |diagram| |Document| |!magic!| | | | {d}| | | | | +---+----+ +-------+ +-------+ : ^ | Lots of work | +-------------------------+
se transformera en :