tar EPERM: operation not permitted, futime

萝らか妹 提交于 2019-12-23 21:24:32

问题


I have a node:alpine Docker image. When I run the image as a root user, I have no problems, but when I use another user and I try to do npm install I receive a lot of errors from package extraction:

npm WARN tar EPERM: operation not permitted, futime

After 5000 WARN messages, I see this on the npm install log:

npm timing action:extract Completed in 276816ms
npm timing action:finalize Completed in 172ms

And no more, the npm install process is completely hang.

Anybody knows this error and know how to avoid it?


回答1:


Solution for WSL:

I solved this by mounting C:/ with default permissions bound to my user instead of root. I followed the guide here: 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

This mounts all files on the C drive as my user instead of root. Therefore sudo is not needed to run npm i




回答2:


I had this in Windows Linux Subsystem too, after moving a project from Windows to Linux. I failed to fix it with

rm -rf node_modules
rm package-lock.json
npm cache clear --force
chown -R username:username *
npm install

None of this worked.


futime errors are caused by the tar utility not having enough rights to perform the necessary actions to expand the .tar files used by npm and the node modules.

In the case of Alpine Linux, you may need to unpack as root and then chown the files, or create a folder owned as the user with the right permissions.

For Windows Subsystem for Linux, it doesn't seem to work with folders under /mnt/c and refuses to change permissions. Setting them in Linux has no effect, and setting them in Windows doesn't seem to make any difference either - adding full control to the 'Everyone' principle doesn't solve this.


(probable) solution for Alpine:

sudo mkdir project_folder
sudo chown username project_folder
cd project_folder
...  

Solution for WSL:

Move the folder into the WSL folder, eg. mv project ~\ so that permissions work correctly.




回答3:


Try with this command might help :

npm install --user


来源:https://stackoverflow.com/questions/56457844/tar-eperm-operation-not-permitted-futime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!