Ild*_*ian 24 node.js docker alpine-linux
我有一个node:alpineDocker 镜像。当我以 root 用户身份运行图像时,我没有问题,但是当我使用另一个用户并尝试这样做时,npm install我从包提取中收到了很多错误:
npm WARN tar EPERM: operation not permitted, futime
Run Code Online (Sandbox Code Playgroud)
在收到 5000 条警告消息后,我在 npm 安装日志中看到了这一点:
npm timing action:extract Completed in 276816ms
npm timing action:finalize Completed in 172ms
Run Code Online (Sandbox Code Playgroud)
没有更多,npm 安装过程完全挂起。
任何人都知道这个错误并知道如何避免它?
小智 77
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
Run Code Online (Sandbox Code Playgroud)
这会将所有文件安装在 C 驱动器上作为我的用户而不是 root。因此 sudo 不需要运行npm i
在将项目从 Windows 转移到 Linux 之后,我在 Windows Linux 子系统中也有这个。我无法修复它
rm -rf node_modules
rm package-lock.json
npm cache clear --force
chown -R username:username *
npm install
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效。
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
...
Run Code Online (Sandbox Code Playgroud)
WSL 的解决方案:
将文件夹移动到 WSL 文件夹中,例如。mv project ~\以便权限正常工作。
| 归档时间: |
|
| 查看次数: |
12845 次 |
| 最近记录: |