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 正忙 -> 从 powershellwsl --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的主要内容,如果未能解决你的问题,请参考以下文章
npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048