Tengo una imagen de node:alpine Docker. Cuando ejecuto la imagen como usuario raíz, no tengo problemas, pero cuando uso otro usuario e intento npm install , recibo muchos errores de la extracción del paquete:
npm WARN tar EPERM: operation not permitted, futimeDespués de 5000 mensajes de ADVERTENCIA, veo esto en el registro de instalación de npm:
npm timing action:extract Completed in 276816ms npm timing action:finalize Completed in 172msY no más, el proceso de instalación de npm está completamente bloqueado.
Alguien conoce este error y sabe como evitarlo?
Solución para WSL:
Resolví esto montando C:/ con permisos predeterminados vinculados a mi usuario en lugar de root. Seguí la guía aquí:https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/
sudo umount /mnt/c sudo mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=111 Esto monta todos los archivos en la unidad C como mi usuario en lugar de root. Por lo tanto, sudo no es necesario para ejecutar npm i
También tuve esto en el Subsistema Linux de Windows, después de mover un proyecto de Windows a Linux. No pude arreglarlo con
rm -rf node_modules rm package-lock.json npm cache clear --force chown -R username:username * npm installNada de esto funcionó.
Los errores de futime se deben a que la utilidad tar no tiene suficientes derechos para realizar las acciones necesarias para expandir los archivos .tar utilizados por npm y los módulos de nodo.
En el caso de Alpine Linux, es posible que deba desempaquetar como raíz y luego chown los archivos, o crear una carpeta que sea propiedad del usuario con los permisos adecuados.
Para el subsistema de Windows para Linux, no parece funcionar con carpetas en /mnt/c y se niega a cambiar los permisos. Configurarlos en Linux no tiene ningún efecto, y configurarlos en Windows tampoco parece hacer ninguna diferencia: agregar control total al principio 'Todos' no resuelve esto.
(probable) solución para Alpine:
sudo mkdir project_folder sudo chown username project_folder cd project_folder ...Solución para WSL:
Mueva la carpeta a la carpeta WSL, por ejemplo. mv project ~\ para que los permisos funcionen correctamente.
No es una solución elegante pero funciona... En el directorio de tu aplicación:
rm -rf node_modules mkdir /home/your_user/node_modules ln -s /home/your_user/node_modules node_modules npm install