You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL Ubuntu执行truffle unpack到Windows目录报权限错误如何解决

核心问题原因

这个报错是WSL跨文件系统操作的典型兼容性问题,根因有两个:

  • WSL默认对Windows NTFS挂载目录(/mnt/c/开头的路径)没有开启元数据支持,Linux侧的文件权限、隐藏文件属性修改操作会被Windows系统拦截,哪怕用sudo、管理员身份启动WSL也无法绕过权限限制
  • Truffle unpack操作会写入.gitattributes这类以.git开头的隐藏配置文件,这类文件在Windows目录下容易被系统安全机制、杀毒软件临时锁定,进一步触发EPERM权限错误

解决方案

方案1(推荐):将项目放在WSL原生文件系统

WSL的Linux原生目录(/home/你的用户名路径下)没有跨系统权限问题,操作性能也比挂载目录高3~10倍:

  1. 在WSL终端执行cd ~ && mkdir solidity && cd solidity
  2. 执行truffle unpack MetaCoin即可正常完成项目初始化
  3. 如果需要在Windows侧用编辑器访问项目,直接在Windows资源管理器地址栏输入\\wsl$\Ubuntu\home\你的WSL用户名\solidity就能访问所有项目文件

方案2:修改WSL挂载配置适配NTFS目录

如果你一定要把项目存放在Windows挂载目录,可以修改WSL的自动挂载规则:

  1. 在WSL终端执行sudo nano /etc/wsl.conf,写入以下配置:
[automount]
options = "metadata,umask=22,fmask=11"
mountFsTab = false
  1. 按Ctrl+O回车保存,Ctrl+X退出nano编辑器
  2. 关闭所有WSL窗口,在Windows PowerShell/CMD执行wsl --shutdown重启WSL,之后再重新执行truffle unpack操作即可

方案3:临时兼容性规避

如果上面的方案都不适用,可以先在Linux临时目录初始化再手动迁移:

  1. 执行cd /tmp && truffle unpack MetaCoin
  2. 执行cp -r /tmp/MetaCoin/* /mnt/c/Users/Tobias/desktop/solidity/,跳过.git开头的隐藏文件即可避免权限报错

额外注意事项

你当前使用的Node v17属于非LTS版本,和你安装的Truffle v5.4.19存在已知兼容性问题,如果操作后还有其他报错,可以用nvm切换到Node 16 LTS版本:

nvm install 16 --lts
nvm alias default 16
npm install -g truffle

内容的提问来源于stack exchange,提问作者leeheung43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:48:00