# Installer la chaîne d'outils MoonBit Ce guide montre comment obtenir `moon`, `moonc` et `moon-lsp` sur une machine, et comment vérifier que Turbo MoonBit les trouve. Il suppose que vous avez déjà Turbo MoonBit, ou que vous êtes sur le point de l'avoir — voir [installer l'éditeur](install.md) pour cela. **L'éditeur fonctionne sans rien de tout ceci.** L'édition, la coloration, les thèmes, les snippets et les fenêtres de terminal tournent sans aucune chaîne d'outils. Ce qui en a besoin, c'est la complétion, les marques d'erreur dans la gouttière, et toutes les commandes du menu MoonBit. ## L'installer Une seule commande installe toute la chaîne — le compilateur, le système de construction et le serveur de langage ensemble : ```bash curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash ``` Elle télécharge dans `~/.moon`, occupe quelques centaines de mégaoctets avec la bibliothèque standard compilée, et se termine par : ``` moonbit was installed successfully to ~/.moon Added "~/.moon/bin" to $PATH in "~/.bashrc" ``` C'est cette dernière ligne qu'il faut lire deux fois. L'installeur modifie **un seul** profil de shell ; un shell déjà ouvert, et tout programme lancé depuis un lanceur de bureau, ne l'a pas lu. ```bash source ~/.bashrc ``` Sous Windows, lancez plutôt l'installeur PowerShell depuis https://www.moonbitlang.com/download. Tout ce qui suit s'applique tel quel une fois qu'il a terminé. ## Le vérifier ```bash moon version --all ``` Vous devriez voir trois lignes, chacune avec son chemin : ``` moon 0.1.20260904 (94521db 2026-09-04) ~/.moon/bin/moon moonc v0.10.12+1634b282e (2026-09-07) ~/.moon/bin/moonc moonrun 0.1.20260904 (94521db 2026-09-04) ~/.moon/bin/moonrun ``` Le serveur de langage est un quatrième binaire dans le même dossier, et il vaut la peine d'être interrogé séparément, parce que c'est celui dont l'éditeur a besoin : ```bash moon-lsp --version ``` ``` v0.10.12+1634b282e (2026-09-07) ``` ## Vérifier que l'éditeur le trouve Ouvrez n'importe quel fichier d'un projet MoonBit et lisez l'extrémité droite de la barre d'état : ``` F1 Describe F2 Save F3 Open F6 Window F10 Menu 1:1 LSP: ready ``` `LSP: ready` signifie que le serveur a démarré. `LSP: no moon-lsp — curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash` signifie qu'il n'a pas été trouvé, et le message est la commande à lancer. **Turbo MoonBit cherche à trois endroits, dans cet ordre** : votre `PATH`, puis `$MOON_HOME/bin` si `MOON_HOME` est défini, puis `~/.moon/bin`. L'éditeur trouve donc une chaîne d'outils installée normalement même depuis un shell qui n'a jamais lu le profil que l'installeur a modifié — c'est précisément le cas qui, autrement, ressemble à un serveur en panne. ## Variantes - **Vous installez vos chaînes d'outils ailleurs.** Définissez `MOON_HOME` avant de lancer l'installeur ; il en tient compte, et l'éditeur aussi. - **Vous avez déjà `moon` mais pas de complétion.** Vérifiez `moon-lsp --version` spécifiquement. Une chaîne dépaquetée à la main, ou une mise à jour partielle, peut laisser `moon` en état de marche et `moon-lsp` absent. - **Vous voulez mettre à jour.** `moon upgrade` remplace la chaîne sur place ; `moon upgrade --dev` prend la version de développement. Ni l'un ni l'autre ne touche à `MOON_HOME` ni à votre `PATH`. - **Vous installez pour de l'intégration continue, ou dans une image.** L'installeur est un script shell ordinaire et n'a pas d'option qui vaille la peine ; épingler une version veut dire récupérer une release depuis https://www.moonbitlang.com/download plutôt que de l'utiliser. - **Vous voulez être sûr que l'éditeur ne le trouve pas simplement via le `PATH`.** Lancez-le avec un environnement réduit — `env PATH=/usr/bin:/bin turbo-moonbit main.mbt` — et la barre d'état devrait toujours dire `LSP: ready`, depuis `~/.moon/bin`. ## À quoi sert chaque binaire | Binaire | Ce que l'éditeur en fait | | --- | --- | | `moon-lsp` | Complétion, survol, définitions, références, symboles et marques d'erreur dans la gouttière | | `moon` | Toutes les commandes du menu MoonBit — et `moon-lsp` le lance aussi, pour savoir ce que contient un projet | | `moonc` | Le compilateur, appelé par `moon` | | `moonrun` | Exécute la sortie WebAssembly, appelé par `moon run` | `moon-lsp` seul ne suffit pas : il détermine le projet en lançant `moon`, si bien qu'une machine ayant le serveur mais pas le système de construction obtient un serveur qui démarre, qui est trouvé, et qui ne sait ensuite rien d'aucun fichier. `scripts/install.sh` vérifie exactement cela et le dit. ## Voir aussi - [Activer la complétion](enable-completion.md) — que faire quand le serveur est installé et ne dit toujours rien - [Lancer les commandes moon depuis l'éditeur](run-moon-commands.md) — le menu MoonBit - [Coloration et complétion](../explanation/colouring-and-completion.md) — pourquoi l'éditeur a besoin d'un serveur