Skip to content
Snippets Groups Projects
Select Git revision
  • 5767684273641e29ce78fc447a342ade40245b99
  • master default
  • irony
3 results

Installation.html

Blame
  • Installation.html 21.91 KiB
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
    <head>
    <!-- 2020-04-24 ven. 17:45 -->
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Installation</title>
    <meta name="generator" content="Org mode" />
    <style type="text/css">
     <!--/*--><![CDATA[/*><!--*/
      .title  { text-align: center;
                 margin-bottom: .2em; }
      .subtitle { text-align: center;
                  font-size: medium;
                  font-weight: bold;
                  margin-top:0; }
      .todo   { font-family: monospace; color: red; }
      .done   { font-family: monospace; color: green; }
      .priority { font-family: monospace; color: orange; }
      .tag    { background-color: #eee; font-family: monospace;
                padding: 2px; font-size: 80%; font-weight: normal; }
      .timestamp { color: #bebebe; }
      .timestamp-kwd { color: #5f9ea0; }
      .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
      .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
      .org-center { margin-left: auto; margin-right: auto; text-align: center; }
      .underline { text-decoration: underline; }
      #postamble p, #preamble p { font-size: 90%; margin: .2em; }
      p.verse { margin-left: 3%; }
      pre {
        border: 1px solid #ccc;
        box-shadow: 3px 3px 3px #eee;
        padding: 8pt;
        font-family: monospace;
        overflow: auto;
        margin: 1.2em;
      }
      pre.src {
        position: relative;
        overflow: visible;
        padding-top: 1.2em;
      }
      pre.src:before {
        display: none;
        position: absolute;
        background-color: white;
        top: -10px;
        right: 10px;
        padding: 3px;
        border: 1px solid black;
      }
      pre.src:hover:before { display: inline;}
      /* Languages per Org manual */
      pre.src-asymptote:before { content: 'Asymptote'; }
      pre.src-awk:before { content: 'Awk'; }
      pre.src-C:before { content: 'C'; }
      /* pre.src-C++ doesn't work in CSS */
      pre.src-clojure:before { content: 'Clojure'; }
      pre.src-css:before { content: 'CSS'; }
      pre.src-D:before { content: 'D'; }
      pre.src-ditaa:before { content: 'ditaa'; }
      pre.src-dot:before { content: 'Graphviz'; }
      pre.src-calc:before { content: 'Emacs Calc'; }
      pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
      pre.src-fortran:before { content: 'Fortran'; }
      pre.src-gnuplot:before { content: 'gnuplot'; }
      pre.src-haskell:before { content: 'Haskell'; }
      pre.src-hledger:before { content: 'hledger'; }
      pre.src-java:before { content: 'Java'; }
      pre.src-js:before { content: 'Javascript'; }
      pre.src-latex:before { content: 'LaTeX'; }
      pre.src-ledger:before { content: 'Ledger'; }
      pre.src-lisp:before { content: 'Lisp'; }
      pre.src-lilypond:before { content: 'Lilypond'; }
      pre.src-lua:before { content: 'Lua'; }
      pre.src-matlab:before { content: 'MATLAB'; }
      pre.src-mscgen:before { content: 'Mscgen'; }
      pre.src-ocaml:before { content: 'Objective Caml'; }
      pre.src-octave:before { content: 'Octave'; }
      pre.src-org:before { content: 'Org mode'; }
      pre.src-oz:before { content: 'OZ'; }
      pre.src-plantuml:before { content: 'Plantuml'; }
      pre.src-processing:before { content: 'Processing.js'; }
      pre.src-python:before { content: 'Python'; }
      pre.src-R:before { content: 'R'; }
      pre.src-ruby:before { content: 'Ruby'; }
      pre.src-sass:before { content: 'Sass'; }
      pre.src-scheme:before { content: 'Scheme'; }
      pre.src-screen:before { content: 'Gnu Screen'; }
      pre.src-sed:before { content: 'Sed'; }
      pre.src-sh:before { content: 'shell'; }
      pre.src-sql:before { content: 'SQL'; }
      pre.src-sqlite:before { content: 'SQLite'; }
      /* additional languages in org.el's org-babel-load-languages alist */
      pre.src-forth:before { content: 'Forth'; }
      pre.src-io:before { content: 'IO'; }
      pre.src-J:before { content: 'J'; }
      pre.src-makefile:before { content: 'Makefile'; }
      pre.src-maxima:before { content: 'Maxima'; }
      pre.src-perl:before { content: 'Perl'; }
      pre.src-picolisp:before { content: 'Pico Lisp'; }
      pre.src-scala:before { content: 'Scala'; }
      pre.src-shell:before { content: 'Shell Script'; }
      pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
      /* additional language identifiers per "defun org-babel-execute"
           in ob-*.el */
      pre.src-cpp:before  { content: 'C++'; }
      pre.src-abc:before  { content: 'ABC'; }
      pre.src-coq:before  { content: 'Coq'; }
      pre.src-groovy:before  { content: 'Groovy'; }
      /* additional language identifiers from org-babel-shell-names in
         ob-shell.el: ob-shell is the only babel language using a lambda to put
         the execution function name together. */
      pre.src-bash:before  { content: 'bash'; }
      pre.src-csh:before  { content: 'csh'; }
      pre.src-ash:before  { content: 'ash'; }
      pre.src-dash:before  { content: 'dash'; }
      pre.src-ksh:before  { content: 'ksh'; }
      pre.src-mksh:before  { content: 'mksh'; }
      pre.src-posh:before  { content: 'posh'; }
      /* Additional Emacs modes also supported by the LaTeX listings package */
      pre.src-ada:before { content: 'Ada'; }
      pre.src-asm:before { content: 'Assembler'; }
      pre.src-caml:before { content: 'Caml'; }
      pre.src-delphi:before { content: 'Delphi'; }
      pre.src-html:before { content: 'HTML'; }
      pre.src-idl:before { content: 'IDL'; }
      pre.src-mercury:before { content: 'Mercury'; }
      pre.src-metapost:before { content: 'MetaPost'; }
      pre.src-modula-2:before { content: 'Modula-2'; }
      pre.src-pascal:before { content: 'Pascal'; }
      pre.src-ps:before { content: 'PostScript'; }
      pre.src-prolog:before { content: 'Prolog'; }
      pre.src-simula:before { content: 'Simula'; }
      pre.src-tcl:before { content: 'tcl'; }
      pre.src-tex:before { content: 'TeX'; }
      pre.src-plain-tex:before { content: 'Plain TeX'; }
      pre.src-verilog:before { content: 'Verilog'; }
      pre.src-vhdl:before { content: 'VHDL'; }
      pre.src-xml:before { content: 'XML'; }
      pre.src-nxml:before { content: 'XML'; }
      /* add a generic configuration mode; LaTeX export needs an additional
         (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
      pre.src-conf:before { content: 'Configuration File'; }
    
      table { border-collapse:collapse; }
      caption.t-above { caption-side: top; }
      caption.t-bottom { caption-side: bottom; }
      td, th { vertical-align:top;  }
      th.org-right  { text-align: center;  }
      th.org-left   { text-align: center;   }
      th.org-center { text-align: center; }
      td.org-right  { text-align: right;  }
      td.org-left   { text-align: left;   }
      td.org-center { text-align: center; }
      dt { font-weight: bold; }
      .footpara { display: inline; }
      .footdef  { margin-bottom: 1em; }
      .figure { padding: 1em; }
      .figure p { text-align: center; }
      .inlinetask {
        padding: 10px;
        border: 2px solid gray;
        margin: 10px;
        background: #ffffcc;
      }
      #org-div-home-and-up
       { text-align: right; font-size: 70%; white-space: nowrap; }
      textarea { overflow-x: auto; }
      .linenr { font-size: smaller }
      .code-highlighted { background-color: #ffff00; }
      .org-info-js_info-navigation { border-style: none; }
      #org-info-js_console-label
        { font-size: 10px; font-weight: bold; white-space: nowrap; }
      .org-info-js_search-highlight
        { background-color: #ffff00; color: #000000; font-weight: bold; }
      .org-svg { width: 90%; }
      /*]]>*/-->
    </style>
    <link rel="stylesheet" type="text/css" href="styles/readtheorg/css/htmlize.css"/>
    <link rel="stylesheet" type="text/css" href="styles/readtheorg/css/readtheorg.css"/>
    <script type="text/javascript" src="styles/lib/js/jquery.min.js"></script>
    <script type="text/javascript" src="styles/lib/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="styles/lib/js/jquery.stickytableheaders.min.js"></script>
    <script type="text/javascript" src="styles/readtheorg/js/readtheorg.js"></script>
    <script type="text/javascript">
    /*
    @licstart  The following is the entire license notice for the
    JavaScript code in this tag.
    
    Copyright (C) 2012-2019 Free Software Foundation, Inc.
    
    The JavaScript code in this tag is free software: you can
    redistribute it and/or modify it under the terms of the GNU
    General Public License (GNU GPL) as published by the Free Software
    Foundation, either version 3 of the License, or (at your option)
    any later version.  The code is distributed WITHOUT ANY WARRANTY;
    without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
    
    As additional permission under GNU GPL version 3 section 7, you
    may distribute non-source (e.g., minimized or compacted) forms of
    that code without the copy of the GNU GPL normally required by
    section 4, provided you include this license notice and a URL
    through which recipients can access the Corresponding Source.
    
    
    @licend  The above is the entire license notice
    for the JavaScript code in this tag.
    */
    <!--/*--><![CDATA[/*><!--*/
     function CodeHighlightOn(elem, id)
     {
       var target = document.getElementById(id);
       if(null != target) {
         elem.cacheClassElem = elem.className;
         elem.cacheClassTarget = target.className;
         target.className = "code-highlighted";
         elem.className   = "code-highlighted";
       }
     }
     function CodeHighlightOff(elem, id)
     {
       var target = document.getElementById(id);
       if(elem.cacheClassElem)
         elem.className = elem.cacheClassElem;
       if(elem.cacheClassTarget)
         target.className = elem.cacheClassTarget;
     }
    /*]]>*///-->
    </script>
    </head>
    <body>
    <div id="content">
    <h1 class="title">Installation</h1>
    <div id="table-of-contents">
    <h2>Table des matières</h2>
    <div id="text-table-of-contents">
    <ul>
    <li><a href="#orgb882bb7">1. Installation d'Emacs</a>
    <ul>
    <li><a href="#org1b7d628">1.1. Version proposée par la distribution</a></li>
    <li><a href="#orgd29a713">1.2. Préparation de l'installation</a></li>
    <li><a href="#org1f20b2c">1.3. Nettoyage du système.</a></li>
    </ul>
    </li>
    <li><a href="#org7f3069f">2. Récupérer la configuration</a>
    <ul>
    <li><a href="#org54316ef">2.1. Sauvegarde de l'ancienne configuration</a></li>
    <li><a href="#orgef75cd7">2.2. Téléchargement de la configuration</a></li>
    </ul>
    </li>
    <li><a href="#org246ab63">3. Python</a></li>
    <li><a href="#org6d995b5">4. Global</a></li>
    <li><a href="#org77cf875">5. C++</a></li>
    </ul>
    </div>
    </div>
    <p>
    Ce document se place dans le cas d'un système <b>GNU/Linux</b> pour une
    distribution <code>Debian</code> (ou basée sur <code>Debian</code> comme <code>Ubuntu</code> par exemple) et
    présuppose que l'utilisateur peut installer les logiciels par le biais
    de la commande <code>apt</code> et dispose donc des privilèges <code>root</code>.
    </p>
    
    <p>
    Dans le cas contraire, il reste possible d'utiliser cette
    configuration, mais l'utilisateur devra, soit utiliser les commandes
    <i>ad hoc</i> (dans le cas d'une autre distribution) soit les installer en
    recompilant éventuellement les logiciels.
    </p>
    
    <div style="color: red;" class="mdframed">
    <p>
    <b>IMPORTANT</b>
    </p>
    
    <p>
    Au premier lancement d'Emacs, tous les paquets nécessaires seront
    téléchargés puis compilés. Le premier démarrage prendra donc un
    certain temps. Ce ne sera évidemment plus le cas par la suite.
    </p>
    
    </div>
    
    
    <div id="outline-container-orgb882bb7" class="outline-2">
    <h2 id="orgb882bb7"><span class="section-number-2">1</span> Installation d'Emacs</h2>
    <div class="outline-text-2" id="text-1">
    <p>
    Pour que cette configuration fonctionne de manière optimale il faut
    que la version d'Emacs installée soit au moins la <code>26.0.50</code>.
    </p>
    
    <p>
    Pour commencer il faut vérifier si le système fourni de la version
    minimum nécessaire. Dans le cas contraire, il faut enrichir la base
    des paquets ou l'installer manuellement.
    </p>
    </div>
    
    <div id="outline-container-org1b7d628" class="outline-3">
    <h3 id="org1b7d628"><span class="section-number-3">1.1</span> Version proposée par la distribution</h3>
    <div class="outline-text-3" id="text-1-1">
    <p>
    Pour connaître la version du système on utilise la commande
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">lsb_release -a
    </pre>
    </div>
    
    <p>
    Jusqu'aux versions
    </p>
    <ul class="org-ul">
    <li><code>bionic</code> (<code>18.x.x</code>) d'<code>Ubuntu</code>,</li>
    <li><code>stretch</code> (<code>9.x.x</code>) de <code>Debian</code>,</li>
    </ul>
    <p>
    incluses, la version d'Emacs n'est pas suffisante.
    </p>
    
    <p>
    Si <code>Emacs</code> n'est pas installé et si les versions d'<code>Ubuntu</code> ou <code>Debian</code> sont
    suffisamment récentes, il suffit d'exécuter dans ce cas :
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt update
    sudo apt -y install emacs
    </pre>
    </div>
    
    <p>
    Si Emacs était installé, on peut tout de même s'assurer de sa version
    en utilisant la commande.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">emacs --version
    </pre>
    </div>
    <p>
    Si la version est suffisante (au delà de <code>26.0.50</code>), on peut ignorer le
    paragraphe suivant.
    </p>
    </div>
    </div>
    
    <div id="outline-container-orgd29a713" class="outline-3">
    <h3 id="orgd29a713"><span class="section-number-3">1.2</span> Préparation de l'installation</h3>
    <div class="outline-text-3" id="text-1-2">
    <p>
    Pour installer Emacs manuellement (ce qui n'est pas recommandé), on
    peut suivre les instructions données <a href="https://www.gnu.org/software/emacs/download.html">ici</a>.
    </p>
    
    <p>
    On se concentre ici sur une installation de paquets précompilés.
    </p>
    
    <p>
    On doit ajouter des dépôts de paquets pour l'installation, on s'assure
    donc que les outils de gestion de dépôts extérieurs sont disponibles.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install software-properties-common
    </pre>
    </div>
    
    <p>
    On ajoute le dépôt en faisant.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo add-apt-repository -y ppa:kelleyk/emacs
    </pre>
    </div>
    
    <p>
    Puis on installe Emacs.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install emacs26
    </pre>
    </div>
    
    <p>
    Pour terminer on s'assure que la version par défaut d'Emacs sera bien
    la 26. Pour cela, on exécute
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo update-alternatives --set emacs /usr/bin/emacs26
    </pre>
    </div>
    
    <p>
    On peut vérifier à nouveau que tout s'est bien passé en exécutant
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">emacs --version
    </pre>
    </div>
    </div>
    </div>
    
    <div id="outline-container-org1f20b2c" class="outline-3">
    <h3 id="org1f20b2c"><span class="section-number-3">1.3</span> Nettoyage du système.</h3>
    <div class="outline-text-3" id="text-1-3">
    <p>
    Si une version d'Emacs était déjà installée, il est probable que des
    paquets Emacs l'aient été aussi. Pour que cette configuration
    fonctionne de manière optimale, il convient de les supprimer.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt remove -y --purge <span class="org-string">'^elpa*'</span>
    </pre>
    </div>
    </div>
    </div>
    </div>
    
    <div id="outline-container-org7f3069f" class="outline-2">
    <h2 id="org7f3069f"><span class="section-number-2">2</span> Récupérer la configuration</h2>
    <div class="outline-text-2" id="text-2">
    </div>
    <div id="outline-container-org54316ef" class="outline-3">
    <h3 id="org54316ef"><span class="section-number-3">2.1</span> Sauvegarde de l'ancienne configuration</h3>
    <div class="outline-text-3" id="text-2-1">
    <p>
    Si Emacs avait déjà été utilisé sur le compte de l'utilisateur, il a
    généré automatiquement des fichiers de configuration. Il faut donc les
    supprimer (ou les sauvegarder) avant d'installer cette configuration.
    </p>
    
    <p>
    Ce sont des fichiers cachés que nous allons placer dans un répertoire
    pour éventuellement les réutiliser ultérieurement si cette
    configuration ne convient pas.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">mkdir -p ~/sauvegarde.emacs-<span class="org-sh-quoted-exec">`date +%Y%m%d`</span>
    mv ~/.emacs* ~/sauvegarde.emacs-<span class="org-sh-quoted-exec">`date +%Y%m%d`</span>
    </pre>
    </div>
    </div>
    </div>
    
    <div id="outline-container-orgef75cd7" class="outline-3">
    <h3 id="orgef75cd7"><span class="section-number-3">2.2</span> Téléchargement de la configuration</h3>
    <div class="outline-text-3" id="text-2-2">
    <p>
    Pour obtenir la configuration, il est préférable d'utiliser <code>git</code>, pour
    l'installer il suffit d'exécuter la commande suivante.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install git
    </pre>
    </div>
    
    <p>
    On peut maintenant récupérer la configuration.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">git clone git@gitlab.delpinux.fr:delpino/dot-emacs.git ~/.emacs.d
    </pre>
    </div>
    
    <p>
    Il est maintenant possible de lancer Emacs. Comme on l'a dit, la
    configuration initiale va prendre un peu de temps. Et Emacs lui même
    va installer des paquets (<code>Debian</code> ou <code>Ubuntu</code>) pour satisfaire certaines
    dépendances.
    </p>
    
    <p>
    Durant le processus d'installation des paquets, Emacs posera quelques
    questions simples (et éventuellement entrer son mot de passe pour les
    interactions <code>sudo</code>). En cas de problème, relancer Emacs et répondre à
    nouveau aux questions.
    </p>
    
    <p>
    Une fois le premier lancement terminé, on fermera Emacs, puis on
    pourra éventuellement le relancer.
    </p>
    
    <p>
    Pour que toute la configuration soit totalement opérationnelle, il
    faut cependant installer quelques outils supplémentaires.
    </p>
    </div>
    </div>
    </div>
    
    <div id="outline-container-org246ab63" class="outline-2">
    <h2 id="org246ab63"><span class="section-number-2">3</span> Python</h2>
    <div class="outline-text-2" id="text-3">
    <p>
    Pour utiliser correctement <code>Python</code> avec cette configuration, il faut
    installer <code>Python</code> (évidemment) et <code>virtualenv</code> qui va permettre
    d'exécuter les scripts directement dans Emacs et bénéficier de
    l'analyse syntaxique à la volée, entre autres.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install python virtualenv python3-jedi python-jedi
    </pre>
    </div>
    <p>
    Il reste une dernière étape à accomplir, à savoir configurer le
    serveur <code>jedi</code> dans Emacs.
    </p>
    
    <p>
    Pour cela, on lance Emacs puis la commande <code>jedi:install-server</code>, à
    savoir dans Emacs taper
    </p>
    <div class="org-src-container">
    <pre class="src src-:eval">M-x jedi:install-server
    </pre>
    </div>
    <p>
    où <code>M-x</code> signifie qu'on appuie simultanément sur les touches <code>ALT</code> et <code>x</code>,
    on tape ensuite <code>jedi:install-server</code> à l'invite du <i>minibuffer</i> (tout en
    bas).
    </p>
    
    <p>
    Ensuite à la prochaine édition d'un fichier <code>Python</code>, Emacs terminera
    la configuration en demandant (dans le <i>minibuffer</i>)
    </p>
    <pre class="example">
    Please answer y or n.  Automatically install the RPC dependencies
    from PyPI (needed for completion, autoformatting and documentation) ?
    (y or n)
    </pre>
    <p>
    Il convient évidemment de répondre <code>y</code> à cette question.
    </p>
    </div>
    </div>
    
    <div id="outline-container-org6d995b5" class="outline-2">
    <h2 id="org6d995b5"><span class="section-number-2">4</span> Global</h2>
    <div class="outline-text-2" id="text-4">
    <p>
    On recommande aussi d'installer les <code>ggtags</code>.
    </p>
    
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install global
    </pre>
    </div>
    </div>
    </div>
    
    <div id="outline-container-org77cf875" class="outline-2">
    <h2 id="org77cf875"><span class="section-number-2">5</span> C++</h2>
    <div class="outline-text-2" id="text-5">
    <p>
    Enfin, pour configurer correctement l'environnement de développement
    pour le <code>C++</code>, il faut effectuer quelques installations et
    configurations supplémentaires.
    </p>
    
    <p>
    On commence donc par installer <code>clang-9</code>. Il faut s'assurer que le dépôt
    contenant fait partie de la liste des dépôts. Pour les systèmes
    <code>Ubuntu</code>, exécuter
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt-add-repository -u <span class="org-string">"deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverse"</span>
    </pre>
    </div>
    
    <p>
    Pour les systèmes <code>Debian</code>
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt-add-repository -u  <span class="org-string">"deb http://deb.debian.org/debian $(lsb_release -cs)-backports main contrib non-free"</span>
    </pre>
    </div>
    
    <p>
    On peut alors lancer l'installation proprement dite.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install clang-9 libclang-9-dev clang-format-9
    </pre>
    </div>
    
    <p>
    On va maintenant aider Emacs à trouver ces bonnes versions de
    compilateur. Pour cela, on va exécuter les commandes suivantes.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">mkdir -p ~/bin
    ln -s /usr/bin/clang++-9 ~/bin/clang++
    ln -s /usr/bin/clang-9 ~/bin/clang
    ln -s /usr/bin/clang-format-9 ~/bin/clang-format
    </pre>
    </div>
    
    <p>
    Il faut alors ajouter
    </p>
    <div class="org-src-container">
    <pre class="src src-bash"><span class="org-builtin">export</span> <span class="org-variable-name">PATH</span>=~/bin:$<span class="org-variable-name">PATH</span>
    </pre>
    </div>
    <p>
    à son <code>~/.bashrc</code> si ce n'est pas déjà fait. Si on utilise un autre
    <i>shell</i>, on modifiera la variable <code>PATH</code> de la manière adéquate pour que
    <code>~/bin</code> apparaisse au début.
    </p>
    
    <p>
    À ce moment, le plus simple est de se déconnecter pour être sûr que
    cette modification est bien prise en compte.
    </p>
    
    <p>
    Il reste maintenant à compiler le serveur <code>irony</code> pour terminer
    l'installation. Pour cela, on doit installer <code>CMake</code>.
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">sudo apt -y install cmake
    </pre>
    </div>
    
    <p>
    On relance ensuite Emacs, et on exécute la commande
    </p>
    <div class="org-src-container">
    <pre class="src src-bash">M-x irony-install-server
    </pre>
    </div>
    <p>
    Emacs propose alors une commande de compilation dans le <i>minibuffer</i>. Il
    suffit de presser <code>RET</code>. La compilation devrait se dérouler sans
    problème.
    </p>
    </div>
    </div>
    </div>
    <div id="postamble" class="status">
    <p class="date">Created: 2020-04-24 ven. 17:45</p>
    <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
    </div>
    </body>
    </html>