tar EPERM:不允许操作,futime

Posted

技术标签:

【中文标题】tar EPERM:不允许操作,futime【英文标题】:tar EPERM: operation not permitted, futime 【发布时间】:2019-10-20 19:23:32 【问题描述】:

我有一个node:alpine Docker 映像。当我以 root 用户身份运行映像时,我没有任何问题,但是当我使用另一个用户并尝试执行 npm install 时,我从包提取中收到很多错误:

npm WARN tar EPERM: operation not permitted, futime

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

不是优雅的解决方案,但它有效...... 在您的应用程序目录中:

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

【讨论】:

请拨打tour和how to answer【参考方案3】:

WSL 解决方案:

我通过安装 C:/ 来解决这个问题,默认权限绑定到我的用户而不是 root。我在这里按照指南进行操作: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 驱动器上的所有文件作为我的用户而不是 root 安装。因此不需要 sudo 来运行npm i

【讨论】:

工作就像一个魅力。非常感谢。@Ildelian 这应该是公认的答案。 同样适用于 Ubuntu 20.04 LTS。非常感谢! 如果您收到一条消息说 C 正忙 -> 从 powershell wsl --terminate Ubuntu-20.04 或使用 ubuntu 18 等终止 wsl。然后再次启动 wsl2 ubuntu 和 cd / 然后再试一次 @eemilk 这对我有用,谢谢! 谢谢!这对我有用!【参考方案4】:

在将项目从 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 中设置它们似乎也没有任何区别 - 将完全控制添加到“每个人”原则并不能解决这个问题。


Alpine 的(可能的)解决方案:

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

WSL 的解决方案:

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

【讨论】:

将项目从我的 Windows 10 移动到 WSL2 ~ 目录为我解决了这个问题。非常感谢!【参考方案5】:

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

npm install --user

【讨论】:

试过了,同样的问题...(我没有使用 docker,而是 Windows LInux 子系统)

以上是关于tar EPERM:不允许操作,futime的主要内容,如果未能解决你的问题,请参考以下文章

错误:EPERM:Bitbucket 管道中不允许操作

npm - EPERM:在 Windows 上不允许操作

VS 代码 - 错误:EPERM:不允许操作

npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048

错误:EPERM:不允许操作,错误时统计“D:\System Volume Information”(本机)

EPERM,不允许操作错误,配置存储