Blog des Gens Compliqués

Installer Rust (Rustlang) sous Windows - Forcer l'utilisation du compilateur GNU

15/06/2021 15:32:28+02:00|Par DkVZ
Informatique & Web
5 minutes de lecture (facile)

Table des matières

Installer Rust sous Windows

Le moyen le plus simple et flexible est de récupérer rustup-init.exe.

Je conseille d'ouvrir un terminal (Powershell, cmd, peu importe) et de l'exécuter dedans.

Si vous voulez commencer fort, vous pouvez même télécharger rustup-init depuis Powershell avec cette super commande extrêmement claire (SARCASME) qui aurait pu juste être wget ou curl ou W-Get s'ils préfèrent mais on y est pas encore:

Invoke-WebRequest https://win.rustup.rs/x86_64 -Outfile rustup-init.exe

Vous pouvez ensuite exécuter rustup-init.exe et suivre les instructions et tout va bien. Sauf que...

Il manque les C++ build-tools de Visual Studio

Je l'avais un peu tease (carrément spoil) dans l'intro mais si vous n'avez pas la chaine d'outils C++ de Visual Studio vous recevez un beau gros warning:

Avertissement quand on exécute rustup-init.exe
"Install the C++ build tools before proceeding"

Alors qu'est-ce qu'on fait?

Vous pouvez choisir de vous rendre sur https://visualstudio.microsoft.com/visual-cpp-build-tools, si le lien n'est pas mort (cherchez juste "Visual Studio Installer" si le lien ne fonctionne plus), et télécharger le Visual Studio Installer (ne prend que ~70MB), depuis lequel vous pouvez sélectionner les outils de développement C++, qui devraient être en premier.

Le Visual Studio Installer - 6 GB de dépendances à installer
~7GB d'outils de compilation, et on se moquer de node_modules

Et c'est là que je suis triste.

C'est peut-être pas votre cas mais moi, mon disque système (C:\), il est souvent assez petit. Par ex. sur ma machine Windows c'est mon SSD le plus rapide que je garde pour installer des gros jeux. Puis juste pour le principe, on prépare des plans pour éventuellement aller sur Mars, mais on est toujours pas entré dans l'ère où le choix de l'emplacement d'installation complet d'un programme est toujours possible... Sérieusement les gen.te.s?

Ajouter un bouton mode nuit pour le programme d'installation, ça, c'est tranquilou mais avoir de vrais choix d'emplacement d'installation, pas possible.

Bouton mode nuit dans le programme d'installation de Visual Studio
Les gens qui ont eu pendant très longtemps un programme d'installation de Windows en ASCII et couleur BLEUE #0000FF DANS TA FACE ont maintenant un bouton "mode nuit" dans un setup

Alors, oui, je sais qu'on peut choisir plusieurs emplacements d'installation pour les éléments de Visual Studio, sauf que ça marche pas... Vraiment, tout à fait totalement.

C'est possible de déplacer 3.74GB du problème sur un autre disque, mais il reste environ 3GB qui doivent obligatoirement atterir sur le C.

Solution: Utiliser GCC / GNU ABI

C'est possible de demander à rustup-init de télécharger la chaîne de compilation basée sur ce bon vieux GCC, et ça fonctionne sans emcombres (en tous cas sans emcombres que j'eusse pusse rencontrer).

Pour l'installer à son emplacement par défaut (qui sera sur le lecteur système C), il suffit de répondre "2" pour "installation personnalisée" puis de coller ceci à l'invite "Default host":

x86_64-pc-windows-gnu

Comme montré ici:

Capture d'écran de l'assistant d'installation pour le mode compilation GNU
On dirait presque que c'est totalement prévu pour!

Et c'est fini y a rien d'autre à faire. Sauf que moi ça m'arrange pas du tout parce que c'est toujours installé sur le C et représente tout de même un peu plus d'un GB.

L'aubaine, c'est que l'équipe Rust a prévu le coup, et qu'on peut changer les emplacements d'installation à l'aide de variables d'environnement.

Utiliser rustup-init pour installer ailleurs que sur "C:"

Je fournis les commandes pour Powershell parce que je suis hyper moderne comme type, si vous voulez absolument utiliser cmd, vous devrez chercher comment définir des variables d'environnement depuis cmd.

$Env:CARGO_HOME = "e:\rust\cargo"
$Env:RUSTUP_HOME = "e:\rust\rustup"

Dans mon exemple j'installe dans "e:" (c'est "c:" dans les captures d'écrans, je sais, désolé MLDSFKJDLKF).

Tant que j'y suis, je crée d'emblée ces répertoires:

Création de la structure de répertoires
Je sais pas pourquoi j'ai mis cette capture d'écran, promis je vous prend pas pour des gens-qui-ont-pas-bien-dormi-et-alors-ils-sont-un-peu-égarés (oui je suis politquement correct)

Reste plus qu'à exécuter rustup-init.exe dans la même session Powershell, il devrait indiquer les répertoires précédemment assignés aux variables d'environnement CARGO_HOME et RUSTUP_HOME:

rustup-init qui montre les répertoires d'installation personnalisés
J'installe où je veux, d'abord

Il s'agit à nouveau de choisir l'installation personnalisée et coller ceci comme "Default host triple" (super explicite comme étiquette soit-dit en passant):

x86_64-pc-windows-gnu

Une fois l'installation terminée (je vous conseille de bien demander d'ajouter le répertoire "bin" de Cargo au PATH), il faut encore lancer cette commande que je sais pas trop pourquoi mais ça marche pas sinon:

rustup default stable-gnu

Si ça vous dit que rustup n'existe pas, c'est soit qu'il n'a pas été ajouté au PATH (vous devrez alors le faire manuellement), soit qu'il faut relancer votre Powershell, voire toute votre session utilisateur. Je vise large au cas où mais je vous ai pas dit de relancer l'ordi. C'est comme ça qu'on reconnaît un EXPERT. Je vous jure.

Chez moi le répertoire qui contient Cargo et Rustup prend un peu plus d'1GB, bien plus léger qu'avec Visual Studio:

Taille du répertoire personnalisé pour l'installation de Rust: 1,09GB
Très correct

Désinstallation

Normalement, ceci devrait fonctionner en ligne de commande:

rustup self uninstall

J'ai pas essayé. Me remerciez pas pour ce morceau de documentation extrêmement informatif.

Et maintenant?

Ben maintenant voilà, y a plus qu'à se faire un petit cargo new PROJET-RIGOLO et hoplà youpi jaja ding dong.

Commentaires

Il faut JavaScript activé pour écrire des commentaires ici

Ajouter un commentaire

Votre commentaire a été ajouté
(enfin, je pense)