web-dev-qa-db-fra.com

Impossible de cloner dans un dossier partagé VMWare

Problème étrange ce matin - je ne parviens pas à créer un clone à partir d'un dépôt public sur GitHub dans mon dossier VMWare partagé avec SSH ou HTTPS. Je travaille sur Fedora 22, et si j'essaie cette commande sur un autre système que le dossier partagé, cela fonctionne parfaitement.

git clone https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
fatal: 'Origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Les étapes que j'ai essayées:

  • Redémarrage de VM et de l'hôte Mac (exécutant El Capitan)
  • Réinstallation de git
  • Vérification des autorisations (drwxr-xr-x)

Est-ce que quelqu'un a une idée de la raison pour laquelle le dossier partagé peut être la cause?

33
Toby

J'ai le même problème. Je pense que cela peut être dû au fait que le système de fichiers de dossiers partagés VMWare ne prend pas correctement en charge toutes les opérations de système de fichiers. Par exemple, vous ne pouvez pas créer de lien physique:

$ touch foo
$ ln foo bar
ln: bar: Operation not supported

... et vous ne pouvez pas copier un lien symbolique:

$ touch foo
$ ln -s foo bar
$ cp -R bar baz
cp: bar: could not copy extended attributes to baz: Invalid argument

De plus, une fois que le clone git a échoué, le nom du fichier de la caisse ne peut plus être utilisé:

$ git clone https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
[...]
fatal: index-pack failed
$ touch bootstrap
touch: bootstrap: Input/output error

D'autres ont remarqué les problèmes avec hardlinks et git clone dans les dossiers partagés VMWare. Personne n'a trouvé de solution.

J'ai résolu ce problème lors de l'utilisation d'un invité OS X en enregistrant une image disque dans le dossier partagé, en montant l'image disque dans l'invité, puis en effectuant un clonage Git dans le système de fichiers monté. Un technique similaire peut fonctionner sous Linux, mais je ne l’ai pas essayé.

7
bacongravy

Comme Laurence l'a souligné, il s'agit d'un problème de la version 0.6.0 de VMWare. Ceci est dû au fait:

VMware a changé le paquet d’outils et est passé de HGFS à Fuse au lieu d’être dans le noyau.

/mnt/hgfs ne contient aucun dossier et les dossiers partagés sont créés dans un dossier nommé shared_folder.

Symptômes :

  • Impossible d'accéder à un dossier partagé sur une machine virtuelle à partir d'autres machines du réseau.
  • Un dossier partagé avec les autorisations appropriées sur une machine virtuelle n'est pas accessible sur le réseau

L'erreur similaire à:

You cannot access ip_address\folder_name
You do not have permission to access ip_address\folder_name. Contact your network administrator to request access.

Cause:

Pour autant que je sache, c'est la raison derrière ce problème et d'autres bugs liés à d'autres opérations de système de fichiers. Plus convenablement, 

Ce problème se produit si l'accès à l'objet d'audit GPO est activé sur le dossier partagé et que le dossier partagé réside sur un périphérique enfichable à chaud.

Solution:

Monter des dossiers partagés. Reportez-vous ceci

Localisez les dossiers partagés.

Désactivez l'accès au fichier d'audit sur le dossier partagé et supprimez tous les périphériques hot-plug.

J'espère que cela aidera.

Il y a quelques mois, mon équipe de développement a été confrontée à un problème similaire au sujet duquel un collègue a contacté l'équipe de support au nom de l'organisation. 

Alvaro Aguilera de Hashicorp support a eu la gentillesse de signaler le problème. Initialement, l'équipe de support avait suggéré de passer à Fusion 8.0.2, ce qui fonctionne également dans le cas où l'on souhaite éviter les tracas.

Vous trouverez ci-dessous le message de clôture de l’équipe d’assistance du 20 mai 2016 :

Merci de nous avoir contacté.

Selon le journal, il semble que le module HGFS ne soit pas présent sur la machine virtuelle.

En outre, il existe un problème de fusion VMWare avec 8.1. * Et les ports transférés. Essayez d’utiliser Fusion 8.0.2 car il s’agit du dernier problème connu qui fonctionne sans problème.

Veuillez utiliser les anciennes zones pour votre cas d'utilisation à la place de la dernière version de VMware Fusion, car l'équipe de développeurs a confirmé qu'elle devrait être résolue dans Q1 2017

Merci de votre compréhension.

Nous avions déménagé dans Fusion 8.0.0 et ce problème a été résolu.

4
Aditya C

J'ai trouvé le correctif aujourd'hui. Pas sûr que ce soit la même chose pour tout le monde - mais vous devez configurer votre dossier VM sync pour qu'il utilise smb et aussi mfsymlinks

config.vm.synced_folder ".", "/vagrant", type: "smb", mount_options: ['vers=3.02', 'mfsymlinks']

Je peux maintenant utiliser Git et les liens symboliques correctement dans le VM sans problème.

1
Laurence

J'ai eu le même problème mais j'ai trouvé une solution. Ma configuration utilise VMware Workstation 12.5.5 et le noyau Linux 4.4 pour l'invité. L'hôte exécute le noyau Linux 4.10.8. Vous devez git cloner les derniers openvm-tools dans votre invité Linux sous $ HOME (pas sous votre répertoire de montage HGFS bien sûr): https://github.com/vmware/open-vm-tools

suivez les instructions et compilez openvm-tools à partir de la source. Après la compilation, sauvegardez/usr/bin/vmhgfs-Fuse (cd/usr/bin; mv vmhgfs-Fuse vmhgfs-Fuse.bak) et copiez $ HOME /open-vm-tools/open-vm-tools/vmhgfs-Fuse/.libs/vmhgfs-Fuse vers/usr/bin.

Ensuite, copiez $ HOME/open-vm-tools/open-vm-tools/libvmtools/.libs/libvmtools.so.0.0.0 dans/lib64 et créez-y un lien: ln -s libvmtools.so.0.0.0 libvmtools .so.0

Recherchez d'autres bibliothèques qui pourraient être nécessaires. (utilisez ldd/usr/bin/vmhgfs-Fuse pour connaître les bibliothèques manquantes et les copier en conséquence)

Voilà, redémarrez la machine invitée vmware et vous pourrez utiliser le répertoire monté de votre hôte via HGFS pour stocker les référentiels Git, les clones, les extractions et les push fonctionnent bien maintenant :)

0
Arkh4mkn1ght

J'ai trouvé une solution de contournement à ce problème, partagez un dossier à partir de Windows, puis dans votre invité linux, intall samba et cif-utils . Vous pouvez ensuite monter le partage par ip de l'hôte de cette manière.

(ajoutez cette ligne à votre fstab)

// YOUR_Host_IP/share/PATH_TO/GUEST_SHARE utilisateur cifs, noperm, rw, nom d'utilisateur = YOURUSERNAME, mot de passe = YOURPASSWORD 0 0

la clé ici est la désignation noperm

remarque: pour des raisons de sécurité, vous pouvez stocker votre mot de passe Windows dans un fichier d'informations d'identification et l'appeler ici ou créer un utilisateur sur votre instance Windows uniquement réservé à l'accès de partage, puis accorder l'accès à votre compte d'utilisateur principal. 

J'espère que cela t'aides. 

GIT CLONE À VOTRE DÉSIR DES COEURS

0
Political Unrest

Voici ma solution. Dans la mesure où VMware ne peut pas créer de clonage, utiliser d'autres commandes peut poser des problèmes. Donc, je git clone dans les systèmes Windows, et fais mes tâches git dans mon système Windows. Et cela fonctionne pour moi.

0
Andy

Je n'ai pas de configuration pertinente ici, alors je risque de me tromper, mais - vous dites que le problème ne se produit que sur des dossiers partagés. Une option à laquelle je pourrais penser est que SSH/HTTPS utilise une clé différente de la vôtre lorsque vous vous trouvez dans un tel dossier.

Si tel est le cas, une solution possible consiste à définir des clés pour quiconque est considéré par VMWare comme utilisateur. 

BTW, avez-vous essayé de cloner un référentiel dans un dossier privé puis de le partager? Il est intéressant de savoir si cela fonctionnera de cette manière (ce qui pourrait indiquer que le problème ne survient que lors de la création locale des dossiers) ou échoue avec une erreur similaire ou différente lorsque vous essayez de tirer davantage ou de pousser (ce qui pourrait indiquer que le problème est lié au problème). connexion elle-même, mais pas nécessairement). 

0
Mike