Installation d'un environnement de travail pour INF203

Guillaume Huard, 1er janvier 2021

Table des matières

Dans l'UE INF203, nous avons besoin d'un environnement UNIX pour travailler, en particulier :

Ce guide est destiné à vous permettre d'installer tout cela sur votre machine personnelle selon votre système d'exploitation.

1 Vidéos explicatives

En complément des instructions détaillées, les vidéos suivantes montrent le suivi de ces instructions pour certaines configurations :

2 Quelques problèmes possibles lors de l'installation

3 Windows

3.1 Windows 10

Windows 10 supporte l'installation d'un Linux encapsulé dans une machine virtuelle (VM) et VSCode supporte le développement sur cette machine depuis l'application locale :

  • Installer le 'Windows Subsystem for Linux' (WSL) : https://docs.microsoft.com/fr-fr/windows/wsl/install-win10 Vous pouvez choisir la distribution Linux de votre choix. Pour la suite nous vous donnons les instructions pour une Ubuntu, mais vous devriez pouvoir prendre la distribution de votre choix en adaptant les commandes.
  • A l'installation d'Ubuntu vous devrez indiquer un nom d'utilisateur et un mot de passe associé. Cet utilisateur sera votre utilisateur pour la VM Ubuntu.
  • Avec la VM Ubuntu lancée lors de l'installation (vous pouvez aussi la lancer depuis le menu Start), vous obtenez une fenêtre dans laquelle un interpréteur de commandes attend vos commandes. Saisissez les commandes suivantes pour collecter les infos de mises à jour et installer les outils dont nous nous servirons :
    • sudo apt update
    • sudo apt install clang lldb make manpages-dev
      l'outil vous informe sur tous les paquetages qui vont être installés, acceptez.
    • les fichiers que vous manipulerez dans la VM Ubuntu sont stockés dans un système de fichiers séparé de celui de windows :

      • pour accéder au contenu d'un répertoire de votre VM depuis Windows, exécutez explorer.exe .

      dans le répertoire en question, cela va ourir une fenêtre dans Windows vous permettant de manipuler le contenu de ce répertoire.

      • pour accéder aux lecteurs habituels de Windows (C:, D:, etc.) depuis votre VM, rendez vous

      dans le répertoire /mnt, vous y trouverez un répertoire par lecteur.

  • Installer VSCode : https://code.visualstudio.com
  • Dans VSCode, installer l'extension Remote - WSL.
  • En utilisant le bouton 'Remote' de VSCode, ouvrir un répertoire dans la VM Debian.
  • Installer les extensions VSCode suivantes dans WSL (VScode vous donne le choix):
    • C/C++
    • CodeLLDB
    • VPL Client
    • Make + lldb configuration
  • Une solution avec VirtualBox qui demande une machine suffisamment puissante. Vous pourrez profiter d'un système GNU/Linux complet s'exécutant dans une machine virtuelle sur votre Windows. Cela peut s'avérer un peu trop lourd sur une machine très ancienne car une machine virtuelle demande de la mémoire et un processeur raisonnablement rapide :
  • Pour passer votre Ubuntu en français, depuis l'interpréteur de commandes Ubuntu :

    • sudo apt install language-pack-fr manpages-fr manpages-fr-extra manpages-fr-dev
      l'outil vous informe sur tous les paquetages qui vont être installés, acceptez.
    • sudo apt install $(check-language-support)
      idem.
    • sudo update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR

    Puis fermer l'interpréteur et relancez le.

3.2 Windows <10

Avec les versions de Windows précédant la 10, plusieurs solutions s'offrent à vous :

  • La solution la plus simple, si vous disposez d'une connexion internet lorsque vous travaillez, se connecter sur le serveur Linux de l'université :
    • Ce serveur s'appelle Turing (l'un des pionniers de l'informatique), son nom de machine ou hôte est : turing.e.ujf-grenoble.fr
    • Il est possible d'echanger des fichiers avec ce serveur en utilisant le logiciel Winscp : https://winscp.net/eng/download.php

      • Au lancement, Winscp s'ouvre sur sa fenêtre de gestion des connections, ajouter un nouveau

      site :

      • saisir turing.e.ujf-grenoble.fr comme nom d'hôte.
      • saisir votre nom d'utilisateur et mot de passe (ceux d'Agalan, l'annuaire de

      l'université).

      • sauver ça sous un nom facile à retrouver, Turing par exemple.
      • Se connecter à l'hôte que vous venez de configurer (Login).
      • Dire oui quand le logiciel vous dit ne pas connaître ce serveur (il ne le connait pas

      encore, c'est tout).

      • Vous disposez maintenant d'une double fenêtre vous permettant de transférer les fichiers

      entre votre machine (à gauche) et le serveur de l'université (à droite).

    • Installer VSCode : https://code.visualstudio.com.
    • Dans VSCode, installer l'extension Remote - SSH.
    • En utilisant le bouton 'Remote' de VSCode, choisir 'Open configuration file' et saisissez les informations de connexion :

          Host Turing
      		Hostname turing.e.ujf-grenoble.fr
      		User toto
      

      en remplaçant toto pas votre nom d'utilisateur. N'oubliez pas de sauver.

    • En utilisant le bouton 'Remote' de VSCode, choisir 'Connect Current Window to Host...', puis Turing, Linux, Continue (demande de confirmation, le serveur n'est pas encore connu) et saisissez votre mot de passe.
    • Installer les extensions VSCode suivantes dans SSH (VScode vous donne le choix):
      • C/C++
      • CodeLLDB
      • VPL Client
  • Une solution avec Cygwin, si vous n'avez pas d'autre choix. Vous pouvez installer un environnement UNIX presque complet qui s'exécute nativement sur votre Windows. C'est léger, adapté à une machine peu puissante, mais la configuration et la manière de travailler seront un peu différentes par rapport aux autres solutions :
    • Installer Cygwin : https://cygwin.com
      • avec les paquets : clang, gdb, make, man-pages-posix et chere

        • les fichiers que vous manipulerez sous Cygwin sont stockés dans un système de fichiers séparé de celui de windows :
          • vu depuis Windows, Cygwin place ses fichiers ainsi que tout l'environnement UNIX qu'il propose dans C:\cygwin64\... ou C:\cygwin\... selon la version que vous installez (64 bits ou 32). Par la suite, nous utiliserons des chemins pour Cygwin64, adapter ces chemins selon votre installation.
          • vu depuis l'interpréteur de commandes de Cygwin, les lecteurs habituels de Windows (C:, D:, etc.) sont accessibles à partir de /cygdrive/...
        • le débugger lldb n'est pas compatible avec Cygwin, ce qui va rendre la configuration un peu

        différente de ce que nous conseillons pour les autres systèmes.

    • Installer VSCode : https://code.visualstudio.com et les extensions :
      • C/C++
      • VPL Client
      • Make + lldb configuration
    • Dans VSCode, dans File->Preferences->Settings, dans la partie Features->Terminal :

      • trouvez Integrated > Shell : Windows et éditez le réglage pour y mettre

      "c:\\cygwin64\\bin\\bash.exe"

      • trouvez Integrated > Shell Args : Windows et éditez le réglage pour y mettre

      [ "/usr/bin/xhere", "/bin/bash" ]

4 Linux

GNU/Linux est l'environnement idéal pour travailler l'UE. Dans cette documentation, nous supposons que vous avez installé la distribution Ubuntu ou toute distribution dérivée de la Debian. Si vous êtes débutant, la distribution Ubuntu est généralement considérée comme plus simple à gérer : plus d'interfaces graphiques et moins de commandes textuelles, mais la différence n'est pas énorme.

Commencer par installer les outils que nous utiliserons dans l'UE :

  • sudo apt update
  • sudo apt install clang lldb make

Puis installer VSCode : https://code.visualstudio.com/docs/setup/linux, et les extensions :

  • C/C++
  • CodeLLDB
  • VPL Client
  • Make + lldb configuration

5 OSX

OSX est un UNIX et est donc tout aussi adapté qu'un Linux pour travailler l'UE. Commencer par installer les outils de la ligne de commande, au choix :

Installer ensuite VSCode : https://code.visualstudio.com/docs/setup/linux, et les extensions :

  • C/C++
  • CodeLLDB
  • VPL Client
  • Make + lldb configuration

6 Travailler durant le semestre

L'environnement installé selon votre système vous donne accès à tout ce dont vous avez besoin pour travailler dans l'UE. En particulier tout peut se faire depuis VSCode.

6.1 Commandes Unix et programmation en shell

Dans VSCode, avec Terminal->New Terminal, vous pouvez ouvrir une sous fenêtre dans laquelle s'exécute un interpréteur de commandes. Cet interpréteur vous permet de saisir des commandes Unix ou de programmer en shell. Vous pouvez aussi editer vos scripts dans VSCode et les exécuter grâce au terminal. Attention, lors de l'édition de scripts sous Windows, penser à régler le caractère de fin de ligne sur LF et pas CRLF (réglage accessible dans la barre de status bleue en bas de la fenêtre de VSCode).

6.2 Programmation en C

Dans VSCode, vous pouvez éditer vos fichiers source en C. Vous pouvez les compiler et les exécuter en utilisant le terminal, comme nous apprendrons à le faire dans l'UE. Vous pouvez également écrire deux fichiers de configuration, launch.json et tasks.json dans le répertoire .vscode de votre répertoire de travail, indiquant à VSCode comment il peut compiler et exécuter vos programmes en C. L'extension C/C++ de VSCode est capable de générer ces fichiers de configuration pour vous, mais leur contenu sera alors légèrement différent de celui dont nous avons besoin pour l'UE.

Le contenu de ces deux fichiers de configuration dépend de votre installation. Les configurations qui suivent vous permettent de compiler un programme et de l'exécuter en selectionnant dans l'éditeur le fichier contenant la fonction main.

6.2.1 Sous Cygwin

Sous Cygwin, les entrées/sorties du programme (textes lus/écrits par le programme) se font dans une fenêtre séparée qui s'ouvre lors de l'exécution. Ceci est dû à l'absence de lldb dans cet environnement. De plus, cette fenêtre se ferme toute seule à la fin de l'exécution : si votre programme ne fait que des affichages, vous ne les verrez pas. La solution est, au choix, de :

  • mettre systématiquement un point d'arrêt à la fin du programme.
  • terminer le main par un appel à getchar() (par exemple).

Les fichiers de configuration pour Cygwin sont :

  • launch.json

    {
        "configurations": [
            {
                "name": "Run and debug C Program",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "c:\\cygwin64\\bin\\gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "Make"
            }
        ]
    }
    
  • tasks.json

    {
        "tasks": [
            {
                "type": "process",
                "label": "Make",
                "command": "C:\\cygwin64\\bin\\bash.exe",
                "args": [
                    "--login",
                    "-c",
                    "cd '${fileDirname}' && CC=clang CFLAGS='-g -Wall' make ${fileBasenameNoExtension}"
                ],
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
            }
        ]
    }
    

6.2.2 Sous toute autre configuration

Les entrées/sorties du programme (textes lus/écrits par le programme) se font dans le terminal intégré de VSCode. Les fichiers launch.json et tasks.json peuvent être générés par l'extension 'Make + lldb configuration' en choisissant 'Make & lldb' lors de l'utilisation de 'Run and debug' ou 'create à launch.json file'.

  • launch.json

    {
        "configurations": [
            {
                "name": "Run and debug C Program",
                "type": "lldb",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "cwd": "${fileDirname}",
                "preLaunchTask": "Make"
            }
        ]
    }
    
  • tasks.json

    {
        "tasks": [
            {
                "type": "process",
                "label": "Make",
                "command": "/usr/bin/env",
                "args": [
                    "CC=clang",
                    "CFLAGS=-g -Wall",
                    "make",
                    "${fileBasenameNoExtension}"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
            }
        ]
    }
    

7 Travailler à plusieurs

VSCode supporte la collaboration à distance dans un même espace de travail. Grâce à l'extension 'Live Share', vous pouvez éditer à plusieurs le même ensemble de fichiers, travailler à plusieurs dans le même terminal, avoir un canal de discussion intégré à VSCode, etc. Une fois installée, vous ouvez utiliser 'Live Share' en vous rendant dans la nouvelle vue qui devient disponible, vous avez alors deux choix :

  • Partager : dans ce cas vous hébergez une session et tout le monde travaille sur vos fichiers. Il ne peut y avoir qu'un seul participant hébergeant la session. Losrqu'une session est démarrée, un lien de partage que vous pouvez diffuser aux autre participants et automatiquement copié dans votre 'ClipBoard'. Un nouveau bouton dans la barre d'état (tout en bas) vous permet de copier à nouveau le lien de partage en cas de besoin.
  • Rejoindre : dans ce cas vous utilisez un lien de partage diffusé par l'hébergeur pour rejoindre sa session.

ATTENTION : dans les deux cas, le système ne semble bien fonctionner que si vous vous authentifiez à l'aide d'un compte microsoft ou github, il faudra donc vous en créer un.

Une fois dans une session partagée, la vue 'Live Share' vous permet de voir :

  • les participants (vous pouvez cliquer sur la pastille de couleur pour que leur nom apparaisse ou non dans l'éditeur)
  • les éléments partagé de la session :
    • terminaux
    • canal de discussion
    • canal de discussion audio (en installant 'Live Share Audio')

Et l'explorateur ainsi que l'éditeur vous permettent de travailler tous ensemble sur les fichiers de l'hébergeur.