tar EPERM:不允许操作,futime

时间:2019-06-05 09:31:58

标签: node.js docker alpine

我有一个getElementByTagName("BillNumber").("Header").(i) Docker映像。当我以root用户身份运行映像时,没有任何问题,但是当我使用另一个用户并尝试执行node:alpine时,程序包提取会收到很多错误:

npm install

在收到5000条WARN消息后,我在npm安装日志中看到了这一点:

npm WARN tar EPERM: operation not permitted, futime

而且,npm安装过程已完全挂起。

有人知道这个错误,知道如何避免吗?

5 个答案:

答案 0 :(得分:6)

WSL解决方案:

我通过用默认权限绑定到我的用户而不是root挂载C:/来解决了这个问题。我在这里遵循了指南: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

这将所有文件以我的用户身份而不是以root用户身份装载到C驱动器上。因此,不需要sudo即可运行npm i

答案 1 :(得分:1)

在将项目从Windows迁移到Linux之后,我也在Windows Linux子系统中拥有此功能。我没有用

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

这些都不起作用。


futime错误是由于tar实用程序没有足够的权限来执行必要的操作来扩展npm和节点模块使用的.tar文件而引起的。

对于Alpine Linux,您可能需要先以root身份解压缩,然后chown将文件解压缩,或者创建一个具有正确权限的用户拥有的文件夹。

对于Linux的Windows子系统,它似乎不适用于/mnt/c下的文件夹,并且拒绝更改权限。在Linux中设置它们没有任何作用,在Windows中设置它们似乎也没有任何区别-将完全控制权添加到“所有人”的原则也无法解决此问题。


(可能的)高山解决方案:

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

WSL解决方案:

将文件夹移至WSL文件夹,例如。 mv project ~\,以便权限可以正常工作。

答案 2 :(得分:0)

尝试使用此命令可能会有所帮助:

npm install --user

答案 3 :(得分:0)

这不是一种优雅的解决方案,但是可以工作... 在您的应用程序目录中:

rm -rf node_modules
mkdir /home/your_user/node_modules
ln -s /home/your_user/node_modules node_modules
npm install

答案 4 :(得分:0)

在您的计算机上启用“开发者模式”,然后重新启动以解决此问题!

以下是有关如何在需要时启用开发者模式的指南:https://www.wikihow.com/Enable-Developer-Mode-in-Windows-10#/Image:Enable-Developer-Mode-in-Windows-10-Step-5-Version-3.jpg