Ubuntu系统下Buildozer打包SDL2_image解压软链接权限错误如何解决?
报错根因
执行tar解压时触发Operation not permitted无法创建软链接的常见诱因有3类:
- 构建目录位于不支持软链接的文件系统(如NTFS、FAT32、Windows共享目录),或挂载时配置了
nosymfollow参数禁止软链接创建 - Buildozer缓存目录/构建目录的权限不足,当前用户无创建软链接的权限
- 系统安全模块AppArmor拦截了tar的软链接创建操作
修复方案
- 调整构建目录位置:将整个Kivy工程移动到当前用户主目录(默认ext4文件系统,支持软链接)下执行构建,同时修改
buildozer.spec中build_dir参数指向主目录下的路径,示例:
不要将工程放在外接U盘、移动硬盘、双系统共享的Windows分区下构建。build_dir = /home/[你的系统用户名]/kivy_proj/.buildozer - 手动提前解压依赖包:先手动执行带sudo的解压命令将报错的压缩包解压到Buildozer缓存目录,跳过自动解压步骤:
解压完成后重新执行sudo mkdir -p ~/.buildozer/cache/ cd ~/.buildozer/cache/ sudo /usr/bin/tar xf SDL2_image-2.0.4.tar.gzbuildozer android debug即可。 - 临时提升构建权限:如果是目录权限问题,可直接用sudo执行构建命令:
sudo buildozer android debug - 禁用webp模块(可选):如果你的应用不需要webp格式图片支持,可以直接在
buildozer.spec中配置SDL2_image禁用webp模块,跳过对应软链接创建逻辑:p4a.local_recipes = p4a.source_archives = SDL2_image=SDL2_image-2.0.4.tar.gz,--disable-webp - 临时关闭AppArmor(仅当上述方案都无效时尝试):
构建完成后执行sudo systemctl stop apparmorsudo systemctl start apparmor恢复安全策略即可。
内容的提问来源于stack exchange,提问作者users
相关产品推荐
相关产品推荐

