TAR EPERM:不允许操作,FuTime

ne5o7dgx  于 2022-10-04  发布在  Docker
关注(0)|答案(6)|浏览(214)

我有一张node:alpine Docker的图像。当我以根用户身份运行映像时,没有任何问题,但当我使用另一个用户并尝试执行npm install时,我从包解压缩中收到许多错误:

npm WARN tar EPERM: operation not permitted, futime

在5000条警告消息之后,我在NPM安装日志中看到以下内容:

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

而且,NPM安装过程完全挂起了。

有谁知道这个错误并知道如何避免它?

ivqmmu1c

ivqmmu1c1#

WSL解决方案:

我通过挂载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

这将以我的用户而不是超级用户的身份挂载C盘上的所有文件。因此,运行npm i不需要sudo

xmq68pz9

xmq68pz92#

在将一个项目从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文件。

在阿尔卑斯Linux的情况下,您可能需要以根用户的身份解压,然后chown文件,或者创建一个拥有正确权限的用户拥有的文件夹。

对于Windows Subsystem for Linux,它似乎不能处理/mnt/c下的文件夹,并且拒绝更改权限。在Linux中设置它们没有任何效果,在Windows中设置它们似乎也没有什么不同--将完全控制权添加到“每个人”的原则中并不能解决这个问题。

  • 阿尔卑斯山的(可能)解决方案:*
sudo mkdir project_folder
sudo chown username project_folder
cd project_folder
...
  • WSL解决方案:*

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

vuktfyat

vuktfyat3#

这不是一个优雅的解决方案,但它奏效了。在您的应用程序目录中:

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

kx1ctssn4#

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

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

ffscu2ro

ffscu2ro5#

如果您在使用多通道或docker等工具时遇到此错误,则只需将主目录或代码所在的任何位置挂载到该环境中即可。您也可能会收到此错误。

在这种情况下,您只需将代码从存储库中拖到该环境中,而不是尝试从主机上处理已挂载的代码,就可以避免此类错误。

这种方式也更干净,因为您不需要根据需要提供更多的权限。这可能永远是一个安全问题。

np8igboo

np8igboo6#

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

npm install --user

相关问题