Obtener random "no se puede desvincular el antiguo '<file>' (Permiso denegado)" después de un jalón dentro de un cuadro de Vagabundo

Estoy trabajando en una caja de Vagrant preempaquetada con Homestead 5.0 y, a veces, después de un " git pull o " git checkout , obtengo

 unable to unlink old '<file>' (Permission denied) 

Después de reiniciar mi caja, puedo sacar o pagar normalmente. También traté de hacer git pull localmente y funcionó perfectamente.

Preparar:

  • Mac OS Sierra
  • Caja virtual 5.1.14
  • Vagrant 1.9.1
  • Homestead 5.0

¿Alguien con este problema?

Parece que es un error con macOS ( posiblemente El Capitan pero confirmado en Sierra) y / o NFS.

Vea estos problemas de Vagrant:

  • Problema de permiso NFS en MacOS Sierra
  • Problema con los permissions de carpeta compartida de NFS en Mac OS X (El Capitan)

La mayoría de las personas descubrieron que parece estar relacionado con un problema de almacenamiento en caching del sistema de files .

Solución High Sierra (2017-11-21)

Actualice a High Sierra 10.13.2 Beta 2 según lo confirmado por JF Bibeau .

Actualizado a High Sierra 10.13.2 Beta 2, eliminé mi cronjob que periódicamente hacía una ls -laR como solución alternativa, […]

Me complace informar que no he visto esto en casi 2 semanas de uso de High Sierra. ¡Está completamente arreglado!

Tenga en count que parece haber surgido un problema nuevo, pero diferente, en High Sierra relacionado con una list incorrecta de files en la máquina invitada .


Posibles soluciones

Si no es posible actualizar a High Sierra, aquí hay un par de soluciones.

Actualizar Vagrant y Virtualbox

Si es posible, actualice ambos, aunque algunas personas mencionaron que la degradación ayudó.

Listado recursivo en el host (solución fácil)

Al ejecutar lo siguiente en el host, se actualiza el caching del sistema de files:

 ls -alR [synced_directory] > /dev/null 

o abrir el menu Obtener información del directory sincronizado parece funcionar temporalmente.

Algunas personas hicieron un trabajo cron para hacer eso cada 5 minutos, por lo que nunca se encuentran con el problema, incluso si no es una solución definitiva.

Alguien señaló que ejecutar un listdo de solo el directory tenía el mismo efecto y era más rápido .

 find [synced_directory] -type d > /dev/null 

Desactivando la búsqueda de NFS

Un comentario en el tema mencionado:

Desactivar el lookupcache de NFS parece funcionar, pero el performance es insoportable.

Cambiar los permissions del directory sincronizado

En el equipo host, otorgue acceso de lectura y escritura a Todos . También parece funcionar temporalmente, probablemente por la misma razón de almacenamiento en caching que abre el menu Obtener información .

No usando NFS

 config.vm.synced_folder "./host", "/vagrant-dir", :mount_options => ["dmode=777", "fmode=777"] 

Pero esto tiene un gran inconveniente de performance.

Usando vagrant-sshfs

Este es un plugin vagrant que permite el assembly de directorys con SSHFS. Aunque a partir de los inconvenientes enumerados en el repository en sí:

El performance es peor que una implementación como NFS

Downgrade to El Capitan

Algunas personas mencionaron que no tenían este problema específico de "desvinculación" en El Capitán. Entonces, la degradación sería una solución de último recurso para evitar lidiar con ella.


Algunos desarrolladores registrados de Apple informaron el problema en bugreport.apple.com ( # 28927426 y # 33043401 ) pero la información es privada.

Apple respondió y cerró el informe de error original, diciendo:

El problema informado en este informe de fallas es fijo, pero el problema de High Sierra es específico de APFS y no es el mismo problema. Por favor presente un nuevo nug (sic) para ese problema. Gracias. Ahora estamos cerrando este informe de errores.