Ensimag niveau avancé

De Ensiwiki
Aller à : navigation, rechercher

Le polycopié qui vous a été distribué contient ce qui est jugé indispensable comme connaissance de base de Unix pour la suite de votre scolarité et votre carrière professionnelle. Le but de cette partie est de vous présenter un certain nombre de fonctionnalités/logiciels avancés très utiles de l'environnement UNIX. L'informatique est faite pour vous faire gagner du temps. Le tout est d'utiliser le bon outil pour le bon travail. Pour savoir choisir le bon outil, il n'y a pas de secret, il faut les avoir essayés. Voici donc quelques idées à essayer.

(Si ce n'est pas déjà fait, lisez la page Ensimag niveau débutant en premier)

UNIX at home

Tout en gardant votre système Windows, il est relativement aisé d'installer une des distributions GNU/Linux modernes sur votre PC préféré. Un étudiant déja familiarisé avec le système (de préférence utilisant la même distribution que vous) pourra aussi vous aider. Pour en trouver un, c'est assez simple : repérez les gens qui ont leur machine personnelle avec quelque chose d'inhabituel, qui ne ressemble pas à Windows (ou MacOSX) dessus.

Pour ceux d'entre vous qui utilisent MacOS X, c'est un UNIX (presque) comme les autres, vous n'avez donc pas vraiment besoin d'en installer un autre.

Pour les autres, le Wiki possède une page sur Ubuntu, une distribution axée grand public, et l'Ensimag propose EnsiLinux qui est une Ubuntu modifiée. Le portail Linux liste d'autres distributions, ainsi que plein d'autres informations utiles ! Et si vous hésitez à faire le pas : WindowsOuLinux pourrait vous aider.

Se connecter à distance avec SSH

À ce stade, vous avez dû entendre parler de SSH en long, en large et en travers, mais voici encore quelques idées de ce que SSH peut faire pour vous.

SSH vous permet de vous connecter a distance à une machine UNIX (si vous ne savez pas encore ça... c'est que ce n'est pas inutile de le dire !). Cela permet bien sûr de faire toutes les manipulations en mode texte possibles. Mais SSH permet d'en faire bien plus !

  • Il est capable de gérer une application graphique X11 affichée à distance (ssh -X) ;
  • mais aussi de mettre en place des tunnels (p.ex. avec ssh -D ou ssh -L) ;
  • et les explorateurs de fichiers UNIX (Konqueror, Nautilus) sont capables d'utiliser SSH (ou plus précisément SFTP) pour accéder à des fichiers à distance !

Se connecter avec un couple clef privée/clef publique

Avec autant d'usages, il est parfois pénible de taper son mot de passe à chaque connexion, surtout si l'on réalise de nombreuses connexions pendant un court laps de temps. Néanmoins, il est nécessaire de conserver un certain niveau de sécurité. Pour cela, il est possible de créer un couple de clefs (une clef publique et une clef privée).

Tout cela est expliqué sur la page Clés SSH.

SSH depuis Windows ou d'autres systèmes

Bien sûr, il existe aussi des clients SSH pour Windows. Sans doute le plus connu est Putty, expliqué sur sa propre page.

LaTeX

Il est difficile de produire un document de grande taille avec une qualité typographique professionnelle. Le plus simple est de laisser un logiciel le faire pour vous. Essayez de rédiger votre premier rapport avec LaTeX.

Normalement, vous devriez avoir un stage d'introduction à LaTeX en même temps que votre stage Unix, et vous devriez de toute manière rencontrer ce logiciel encore un certain nombre de fois, surtout si vous voulez écrire des maths.

À noter que LaTeX permet aussi de réaliser des présentations (à la powerpoint), avec Beamer, qui est un "style" de documents LaTeX en profitant des points forts de LaTeX, comme la mise en page automatique (exemple)

Les gestionnaires de versions

Lorsque l'on rédige un document, ou que l'on écrit le code d'un logiciel, tout seul ou à plusieurs, on souhaite presque toujours conserver les différentes étapes de la réalisation. Pour cela il existe une classe de logiciel dédiée au travail collaboratif sur des fichiers contenant du texte (Versionner des fichiers binaires est possible, mais en général peu efficace et pas très intéressant).

La page Gestionnaire de Versions devrait vous aider à comprendre le principe de ces outils, et à choisir le votre. Pour faire court, tout bon étudiant devrait maitriser un (ou plusieurs) outil de gestion de versions. Nous utilisons Git en projet génie logiciel en milieu de 2A. D'autres alternatives sont Mercurial (assez proche de Git sur le principe), et Subversion (beaucoup plus limité, mais peut-être un peu plus facile à apprendre).

Changer de gestionnaire de fenêtres

Le gestionnaire de fenêtres est le programme qui gère la position de vos fenêtres, les icônes, la barre au sommet des fenêtres, etc.

Ce programme peut être changé très facilement. Cela vous permet de choisir un environnement qui soit le meilleur pour vous.

Principe

Lorsque vous vous connectez graphiquement, le fichier .xsession de votre HOME est exécuté (et lorsque le script termine, la session graphique se termine également). L'Ensimag vous fournit un fichier qui permet de gérer les environnements hétérogènes (claviers) de l'Ensimag. À la fin de ce fichier, vous avez des lignes du genre :

# On utilise icewm
# a commenter sinon
/usr/local/bin/icewm

Elles indiquent quel gestionnaire vous lancez.

Les différents gestionnaires de fenêtres

Vous pouvez remplacer la dernière ligne par un des autres gestionnaires disponibles (Attention, la liste peut changer avec les mises à jour de telesun. Vérifiez avec ls -l que le fichier existe et est exécutable avant de le mettre dans votre ~/.xsession) :

  • /usr/local/bin/icewm
  • /usr/X11R6/bin/twm
  • /usr/X11R6/bin/mwm
  • /usr/bin/startkde
  • /usr/bin/metacity
  • /usr/bin/gnome-session

Il suffit alors de vous déconnecter puis de vous reconnecter pour essayer ce nouvel environnement.

Attention, les environnement GNOME et KDE sont séduisants, mais beaucoup plus gourmands en ressources que icewm. Pour éviter de faire ramer les serveurs, il vaut mieux éviter de les avoir comme environnement par défaut...

Attentionvous êtes encouragés à être curieux, mais attention tout de même à ne pas « casser » votre compte. L'Ensimag se charge de vous fournir un environnement par défaut qui marche, mais ne vous garantit rien si vous utilisez quelque chose de plus exotique.


Programmer en Shell

Si vous êtes arrivés ici, vous connaissez probablement la ligne de commande d'Unix : on entre une commande, et elle est exécutée. Le programme qui lit les commandes et les exécute s'appelle le « shell », et est en fait un langage de programmation. Vous verrez en cours d'Unix avancé comment utiliser ce langage de programmation, mais pourquoi pas prendre un peu d'avance avec la page Script Shell ?

Et le reste

Il reste tant de choses à présenter. Parmi les plus importantes, vous devriez apprendre à vous servir de make (automatise la (re)compilation de vos projets), GDB (un débogueur) ou peut-être ddd (une interface graphique à GDB notamment) et Valgrind (vérificateur d'accès mémoire, très appréciable lorsque vous programmerez en C). Tous ces programmes sont abordés au cours du Projet C de fin de 1A, mais vous êtes encouragés à découvrir par vous-même !

D'autres idées pour la suite : splint (vérification statique de code C ; a malheureusement tendance à être trop bruyant et voir des erreurs partout), automake/autoconf (très utilisés, mais assez complexes) ou CMake ou scons (aide à la création de Makefile et à la distribution de votre programme sur des plateformes hétérogènes, p'tet pas pour tout de suite si vous débutez en programmation :).

Indépendemment de ces outils, apprendre quelques langages de script complémentaires vous sera également utile, quoi que vous fassiez, pour automatiser des tâches. En voici quelques uns : shell (dont vous aurez/avez eu une introduction pendant le stage Unix Avancé) avec awk (langage spécialisé orienté vers la manipulation de bloc de texte) et sed, Perl (langage générique, avec une orientation vers la manipulation de texte), python (généraliste), ruby (généraliste).

Autre guide