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

Linux环境下构建Pyodide遇Permission Denied错误求助

解决Pyodide源码构建时的Permission Denied错误

问题描述

尝试从源码构建Pyodide,执行make命令时触发权限拒绝错误:

savakar@Qulal:/media/savakar/PROJECTS/pyodide$ make
./tools/dependency-check.sh
/bin/bash: line 1: ./tools/dependency-check.sh: Permission denied
make: *** [Makefile:201: check] Error 126

已通过Dockerfile安装构建依赖,且执行过以下权限命令但问题未解决:

chmod 777 -R /media/savakar/PROJECTS/pyodide/
chmod +rwx -R pyodide/
chmod +rwx -R ./tools

可能的原因及解决方案

1. 外部存储挂载时禁用了执行权限

项目目录位于/media/savakar/PROJECTS/,大概率是外部存储设备(如USB硬盘),这类设备挂载时可能默认添加了noexec选项,禁止执行任何脚本文件。

操作步骤:

  • 检查挂载选项:执行mount | grep /media/savakar/PROJECTS,确认输出中是否包含noexec。
  • 重新挂载并开启执行权限:
    sudo umount /media/savakar/PROJECTS
    sudo mount -o exec,rw /dev/[你的设备名] /media/savakar/PROJECTS
    
    替换[你的设备名]为实际设备标识(可通过lsblk命令查看,例如/dev/sdb1)。
  • 永久生效:编辑/etc/fstab文件,找到对应挂载项,将noexec替换为exec,执行sudo mount -a重新挂载。

2. 脚本文件的执行位未正确设置

递归设置目录权限时,可能因文件系统限制或命令遗漏,导致目标脚本的执行权限未生效。

操作步骤:

  • 直接为目标脚本添加执行权限:
    chmod +x ./tools/dependency-check.sh
    
  • 验证权限:执行ls -l ./tools/dependency-check.sh,确认输出中包含x权限(例如-rwxrwxrwx)。

3. SELinux限制(若系统启用SELinux)

部分Linux发行版默认启用SELinux,即使文件权限正确,也可能阻止脚本执行。

操作步骤:

  • 临时关闭SELinux测试:执行sudo setenforce 0,重新运行make验证。
  • 永久生效(可选):编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启系统;或为脚本添加SELinux上下文:
    sudo chcon -t bin_t ./tools/dependency-check.sh
    

4. Docker容器内的权限映射问题

若在Docker容器中执行构建,可能存在宿主目录与容器内权限不匹配的问题。

操作步骤:

  • 运行容器时指定与宿主一致的用户ID:
    docker run -u $(id -u):$(id -g) -v /media/savakar/PROJECTS/pyodide:/pyodide [你的镜像名]
    
  • 或在Dockerfile中添加权限设置步骤:
    RUN chmod -R +rwx /pyodide
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:34