diff --git a/.gitignore b/.gitignore index 6266aa6c14b6866e4695b9fa43448c979bb9b1f2..9c27e40cb13089b980031bf73ebd46c7cec1f851 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ auto-save-list /Tutoriel.pyg /_minted*/ /custom.el +/Installation.tex diff --git a/Installation.org b/Installation.org new file mode 100644 index 0000000000000000000000000000000000000000..c499fd96d7da2543b5797d44f4709293fc28b4d7 --- /dev/null +++ b/Installation.org @@ -0,0 +1,239 @@ +#+SETUPFILE: ~/.emacs.d/org-html-themes/setup/theme-readtheorg-local.setup + +#+STARTUP: org-pretty-entities entitiespretty +#+PROPERTY: header-args :comments yes :results silent :exports both +#+options: h:3 num:t toc:3 +#+TITLE: Installation +#+OPTIONS: author:nil date:nil + +#+LANGUAGE: fr + +#+LATEX_CLASS_OPTIONS: [10pt] + +#+LATEX_HEADER: \usepackage[hmargin=2.5cm,vmargin=1.5cm]{geometry} +#+LATEX_COMPILER: pdflatex --shell-escape + +#+LATEX_HEADER_EXTRA: \usepackage{mdframed} +#+LATEX_HEADER_EXTRA: \BeforeBeginEnvironment{minted}{\begin{mdframed}} +#+LATEX_HEADER_EXTRA: \AfterEndEnvironment{minted}{\end{mdframed}} + +Ce document se place dans le cas d'un système *GNU/Linux* pour une +distribution ~Debian~ (ou basée sur ~Debian~ comme ~Ubuntu~ par exemple) et +présuppose que l'utilisateur peut installer les logiciels par le biais +de la commande ~apt~ et dispose donc des privilèges ~root~. + +Dans le cas contraire, il reste possible d'utiliser cette +configuration, mais l'utilisateur devra, soit utiliser les commandes +/ad hoc/ (dans le cas d'une autre distribution) soit les installer en +recompilant éventuellement les logiciels. + +#+ATTR_HTML: :style color: red; +#+BEGIN_mdframed +*IMPORTANT* + +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. +#+END_mdframed + + +* Installation d'Emacs + +Pour que cette configuration fonctionne de manière optimale il faut +que la version d'Emacs installée soit au moins la ~26.0.50~. + +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. + +** Version proposée par la distribution + +Pour connaître la version du système on utilise la commande +#+BEGIN_SRC bash :eval no :exports code + lsb_release -a +#+END_SRC + +Jusqu'aux versions +- ~bionic~ (~18.x.x~) d'~Ubuntu~, +- ~stretch~ (~9.x.x~) de ~Debian~, +incluses, la version d'Emacs n'est pas suffisante. + +Si ~Emacs~ n'est pas installé est si les versions d'~Ubuntu~ ou ~Debian~ +sont suffisamment récentes, il suffit d'exécuter dans ce cas : +#+BEGIN_SRC bash :eval no :exports code + sudo apt update + sudo apt -y install emacs +#+END_SRC + +Si Emacs était installé, on peut tout de même s'assurer de sa version +en utilisant la commande. +#+BEGIN_SRC bash :eval no :exports code + emacs --version +#+END_SRC +Si la version est suffisante (au delà de ~26.0.50~), on peut ignorer le +paragraphe suivant. + +** Préparation de l'installation +Pour installer Emacs manuellement (ce qui n'est pas recommandé), on +peut suivre les instructions données [[https://www.gnu.org/software/emacs/download.html][ici]]. + +On se concentre ici sur une installation de paquets précompilés. + +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. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install software-properties-common +#+END_SRC + +On ajoute le dépôt en faisant. +#+BEGIN_SRC bash :eval no :exports code + sudo add-apt-repository -y ppa:kelleyk/emacs +#+END_SRC + +Puis on installe Emacs. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install emacs26 +#+END_SRC + +Pour terminer on s'assure que la version par défaut d'Emacs sera bien +la 26. Pour cela, on exécute +#+BEGIN_SRC bash :eval no :exports code + sudo update-alternatives --set emacs /usr/bin/emacs26 +#+END_SRC + +On peut vérifier à nouveau que tout s'est bien passé en exécutant +#+BEGIN_SRC bash :eval no :exports code + emacs --version +#+END_SRC + +** Nettoyage du système. +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. +#+BEGIN_SRC bash :eval no :exports code + sudo apt remove -y --purge '^elpa*' +#+END_SRC + +* Récupérer la configuration +** Sauvegarde de l'ancienne configuration +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. + +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. +#+BEGIN_SRC bash :eval no :exports code + mkdir -p ~/sauvegarde.emacs-`date +%Y%m%d` + mv ~/.emacs* ~/sauvegarde.emacs-`date +%Y%m%d` +#+END_SRC + +** Téléchargement de la configuration +Pour obtenir la configuration, il est préférable d'utiliser ~git~, pour +l'installer il suffit d'exécuter la commande suivante. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install git +#+END_SRC + +On peut maintenant récupérer la configuration. +#+BEGIN_SRC bash :eval no :exports code + git clone git@gitlab.delpinux.fr:delpino/dot-emacs.git ~/.emacs.d +#+END_SRC + +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 (~Debian~ ou ~Ubuntu~) pour satisfaire certaines +dépendances. + +Il faudra répondre *oui* (~y~) à toutes les questions qu'il posera (et +éventuellement entrer son mot de passe pour les interactions ~sudo~). + +Une fois le premier lancement terminé, on fermera Emacs, puis on +pourra éventuellement le relancer. + +Pour que toute la configuration soit totalement opérationnelle, il +faut cependant installer quelques outils supplémentaires. + +* Python +Pour utiliser correctement ~Python~ avec cette configuration, il faut +installer ~Python~ (évidemment) et ~virtualenv~ qui va permettre +d'exécuter les scripts directement dans Emacs et bénéficier de +l'analyse syntaxique à la volée, entre autres. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install python virtualenv python3-jedi python-jedi +#+END_SRC +Il reste une dernière étape à accomplir, à savoir configurer le +serveur ~jedi~ dans Emacs. + +Pour cela, on lance Emacs puis la commande ~jedi:install-server~, à +savoir dans Emacs taper +#+BEGIN_SRC :eval no :exports code + M-x jedi:install-server +#+END_SRC +où ~M-x~ signifie qu'on appuie simultanément sur les touches ~ALT~ et ~x~, +on tape ensuite ~jedi:install-server~ à l'invite du /minibuffer/ (tout en +bas). + +Ensuite à la prochaine édition d'un fichier ~Python~, Emacs terminera +la configuration en demandant (dans le /minibuffer/) +#+BEGIN_EXAMPLE + Please answer y or n. Automatically install the RPC dependencies + from PyPI (needed for completion, autoformatting and documentation) ? + (y or n) +#+END_EXAMPLE +Il convient évidemment de répondre ~y~ à cette question. + +* Global +On recommande aussi d'installer les ~ggtags~. + +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install global +#+END_SRC + +* C++ +Enfin, pour configurer correctement l'environnement de développement +pour le ~C++~, il effectuer quelques installations et configurations +supplémentaires. + +On commence donc par installer ~clang-9~. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install clang-9 libclang-9-dev +#+END_SRC + +On va maintenant aider Emacs à trouver ces bonnes versions de +compilateur. Pour cela, on va exécuter les commandes suivantes. +#+BEGIN_SRC bash :eval no :exports code + 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 +#+END_SRC + +Il faut alors ajouter +#+BEGIN_SRC bash :eval no :exports code + export PATH=~/bin:$PATH +#+END_SRC +à son ~~/.bashrc~ si ce n'est pas déjà fait. Si on utilise un autre +/shell/, on modifiera la variable ~PATH~ de la manière adéquate pour que +=~/bin= apparaisse au début. + +À ce moment, le plus simple est de se déconnecter pour être sûr que +cette modification est bien prise en compte. + +Il reste maintenant à compiler le serveur ~irony~ pour terminer +l'installation. Pour cela, on doit installer ~CMake~. +#+BEGIN_SRC bash :eval no :exports code + sudo apt -y install cmake +#+END_SRC + +On relance ensuite Emacs, et on exécute la commande +#+BEGIN_SRC bash :eval no :exports code + M-x irony-install-server +#+END_SRC +Emacs propose alors une commande de compilation dans le /minibuffer/. Il +suffit de presser ~RET~. La compilation devrait se dérouler sans +problème. + +# Local Variables: +# ispell-local-dictionary: "francais" +# End: