76 votes

WSL Ubuntu Distro | Comment résoudre le problème de l'opération non autorisée lors du clonage d'un référentiel ?

J'exécute Ubuntu 18.04, en tant que sous-système pour Windows. J'ai fait cela sur plusieurs PC et je n'ai jamais eu ce problème. J'essaie de git clone <repo> et je reçois ça :

Cloning into '<repo>'...
error: chmod on /mnt/c/Users/Efsta/Code/<repo>/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'

J'ai essayé ce qui suit :

  1. git config core.fileMode false avec le résultat suivant fatal: not in a git directory

  2. git config --global core.filemode false

  3. git config --add --global core.filemode false

Rien ne semble fonctionner. J'ai déjà essayé quelques réponses ici, mais la WSL semble un peu plus délicate. Quelqu'un a-t-il une idée sur la façon de résoudre ce problème ?

J'ai également tout essayé dans cette question : https://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes rien ne semble fonctionner.

121voto

Wojtek Grojec Points 1311

J'ai eu le même problème. Essayez ceci :

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata

Changez la lettre du lecteur pour celle qui vous pose problème.

77voto

rsteckler Points 871

Vous pouvez monter automatiquement vos disques Windows sous WSL avec l'option métadonnées qui permet aux applications, comme git, d'utiliser chmod et de résoudre ce problème.

Editar /etc/wsl.conf (le créer s'il n'existe pas). Ajoutez les éléments suivants :

[automount]
options = "metadata"

Alors soit :

  • Redémarrer Windows
  • Quittez toutes les sessions WSL, exécutez wsl --shutdown à partir de PowerShell ou CMD, et redémarrer WSL
  • Quittez votre seule session, terminez-la avec wsl --terminate <distroName> et recommencer,

Alors ne vous inquiétez plus jamais pour ça.

32voto

Joe the Person Points 5090

/mnt/c/Users/... se trouve sur la partition NTFS de Windows elle-même, et non pas dans l'arborescence de la WSL. ext4 système formaté. Vous devez donc le traiter comme vous le feriez avec une partition NTFS sur une clé USB sur une installation Ubuntu réelle, et accepter les limitations de NTFS.

Partitions NTFS ne pas soutenir chmod ou des commandes de permissions Linux similaires et, contrairement aux installations Ubuntu actuelles qui n'émettent pas d'erreur mais ne modifient pas les permissions, WSL ne vous transmet pas cette information, il émet simplement une erreur comme vous le voyez ici.

Vous ne pouvez pas faire un git clone sainement dans le /mnt/c/... dans WSL en raison des schémas de permission de Linux et des chmod ne fonctionne pas correctement. Il s'agit d'une limitation de la WSL dans sa forme actuelle.

8voto

ZZX Points 81

J'avais le même problème. Ma solution consiste à cloner mon dépôt dans l'emplacement par défaut de la WSL (cela fonctionne), et à utiliser Visual Studio Code pour accéder à distance aux dépôts de ma WSL. De cette façon, vous n'aurez pas à utiliser /mnt/c du tout.

Liens : https://code.visualstudio.com/docs/remote/wsl

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X