NAME
sans_edix_windows_msys2 - Description de l'installation et l'utilisation de msys2 sur windows
DESCRIPTION ET INSTALLATION
msys2 est un émulateur d'unix(7f) pour le système d'exploitation windows(7f). Pour l'installer, aller sous https://www.msys2.org/ et télécharger msys2-x86_64-latest.exe, puis lancer l'installateur.
Choisir d'installer msys2 à l'adresse
- C:\msys64
Ensuite, mettre à jour msys2 avec la commande suivante :
- $ pacman -Syu
Accepter de rédémarrer et recommencer la même commande, jusqu'à ce que tout soit à jour.
Vous aurez alors une invite de commande shell usuelle et vous pourrez donc vous entraîner à la pratique du shell. Les répertoires de votre système windows sont accessibles directement. Par exemple pour accéder au répertoire de téléchargement d'un utilisateur windows sur le disque C:
- $ cd /c/Users/nom_utilisateur/Downloads
Pour accéder au disque D:
- $ cd /d
CONFIGURATION INITIALE
La gestion des paquets
On met à jour la liste des paquets accesibles et on met à jour les paquets déjà installés avec la commande
- $ pacman -Syu
Pour installer un nouveau paquet, par exemple le paquet tmate, vous utilisez la commande
- ~ $ pacman -S tmate
Les paquets que nous vous conseillons d'installer
- $ pacman -S rsync openssh vim git tmate ttyrec make gcc
Création de deux répertoires de travail
- ~ $ mkdir ${HOME}/bin ~ $ mkdir ${HOME}/tmp
CLONER LE PROJET EDIX
edix(7f) est prévu pour tous nos travaux pratiques sous unix. Il contient donc les éléments nécessaires pour une découverte d'unix et un accès aux séances de travail collectif à distance. Pour utiliser pleinement edix sous windows, vous devez utiliser une machine virtuelle, ou bien utiliser wsl : voir windows(7f).
Mais dans un premier temps, vous pouvez cloner le projet edix sous msys2, c'est à dire télécharger l'ensemble des fichiers de documentation et de configuration d'edix. Cela vous permettra déjà d'accéder à quelques premiers éléments, de parcourir la documentation et par exemple d'accéder à un terminal partagé via tmate.
Nous vous invitons à cloner les projets edix et edix_premiers_pas avec les commandes suivantes :
- ~ $ git clone https://nastar.laplace.enseeiht.fr/git/edstar/edix.git ${HOME}/edix ~ $ git clone https://nastar.laplace.enseeiht.fr/git/edstar/edix_premiers_pas.git ${HOME}/edix_premiers_pas
CONFIGURATION PLUS AVANCEE
Configuration du shell
Vous pouvez remplacer votre fichier de configuration .bashrc par celui proposé sur edix_premiers_pas :
- ~ $ cp ~/edix_premiers_pas/windows/bashrc_windows ~/.bashrc
Ensuite activer ces éléments de configuration en lisant ce fichier avec la commande
- ~ $ . ~/.bashrc
Installation des pages de manuel de edix
Les pages de documentation du projet edix sont accessibles en utilisant la commande man : voir edix_man(7f). Elles sont dans le répertoire ~/edix que vous avez cloné avec git. Pour les installer sur msys2 vous pouvez utiliser les commandes suivantes :
- ~ $ cd ~/edix/doc ~ $ make ~ $ make install
Vous pourrez ensuite utiliser la commande suivante pour apprendre à utiliser les pages de manuel :
- ~ $ man 7f edix_man
Utiliser tmate pour suivre une séance de terminal partagé
Pour utiliser tmate, consulter la page de manuel edix_tmate(7f).
Comme tmate utilise ssh, que vous aurez installé si vous avez suivi nos recommandations (openssh dans les installations par pacman ci-dessus). Cependant, il est possible que vous rencontirez des difficultés avec ssh si les droits de votre répertoire .ssh ne sont pas ceux attendus par ssh. Le problème peut aussi venir des fichiers qui sont situés dans ce répertoire, typiquement les fichiers known_hosts et authorized_keys. Dans ce cas, consutez la section ci-dessous sur la gestion des droits des fichiers sous windows, et par précaution, faites en sorte que le répertoire .ssh et son contenu ne soient accessibles que par l'utilisateur qui utilise msys2 (aucun droit de lecture/écriture/exécution par les autres utilisateurs).
GESTION DES DROITS DES FICHIERS SOUS WINDOWS ET CONFIGURATION DE SSH
Voir les droits d'un fichier ou d'un répertoire
Il n'y a pas de correspondance stricte entre les droits de type unix, par exemple rw-r--r--, et les droits windows. Sous msys2, ce sont les droits windows qui s'expriment (par exemple openssh est compilé de façon à comprendre ces droits windows). Donc on ne peut pas controler les droits des fichiers avec ls /-l (qui renvoit toujours rw-r--r-- ou drwxr-xr-x) ni les modifier avec chmod : la commande chmod ne renvoit aucune erreur mais ne fait rien.
Pour gérer les droits, on doit passer par windows.
Pour cela on lance PowerShell.
Sous PowerShell, on peut afficher les droits d'un fichier avec la commande icacls. Par exemple pour voir les droits du fichier config sous .ssh :
- PS C:\> icacls.exe 'C:\msys64\home\nom_utilisateur\.ssh\config'
On peut aussi afficher les droits d'un répertoire avec la même commande, mais alors on voit aussi d'autres lettres : (0I) pour s'applique aussi aux fichier, (CI) pour s'applique aussi aux sous-répertoires, (I) pour hérité d'un dossier parent.
Changer les droits d'un fichier ou d'un répertoire
Pour changer les droits, on passe également sous PowerShell. On commence par définir l'identité windows de l'utilisateur :
- PS C:\> $acct = (whoami)
- PS C:\> "${acct}"
Ensuite, par exemple pour limiter les droits du fichier du repertoire .ssh (les mettre à l'équivalent de rwx------) :
- PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh /inheritance:r PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh /grant:r "${acct}:(OI)(CI)F"
- PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh C:\msys64\home\nom_utilisateur\.ssh NOM-ORDINATEUR\nom_utilisateur:(OI)(CI)(F)
Ensuite, par exemple pour limiter les droits du fichier config sous .ssh (les mettre à l'équivalent de rw-------) :
- PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config /inheritance:r PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config /grant:r "${acct}:(R,W)"
- PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config C:\msys64\home\nom_utilisateur\.ssh\config AUTORITE NT\Système:(F) BUILTIN\Administrateurs:(F) NOM-ORDINATEUR\nom_utilisateur:(R,W)
VOIR AUSSI
edix(7f), edix_man(7f), edix_premiers_pas(7f), edix_tmate(7f), unix(7f), windows(7f)