项目相关:MyCard-3.0.77.AppImage
运行环境:Arch Linux (x86_64)
错误现象:在使用 MyCard 下载 YGOPRO2 时,调用 aria2c 失败,终端返回 32 错误码。
问题描述
在 Linux 环境下运行 MyCard 客户端并尝试下载资源时,程序无法启动内置的 aria2c 进行下载任务。经过提取 AppImage 内容分析,确认该版本打包的可执行文件并非 Linux ELF 格式。
复现步骤
- 在 Arch Linux (大概率任意发行版上)上运行
MyCard-3.0.77.AppImage。 - 尝试点击下载/更新 YGOPRO2。
- 观察到无法下载,系统报告执行错误。
调试信息
通过提取 AppImage 镜像并使用 file 命令检查内置二进制文件:
$ ./MyCard-3.0.77.AppImage --appimage-extract
$ file ./squashfs-root/resources/bin/aria2c
实际输出:
./squashfs-root/resources/bin/aria2c: Mach-O universal binary with 2 architectures: [x86_64: Mach-O 64-bit x86_64 executable] [arm64: Mach-O 64-bit arm64 executable]
原因分析
该版本的 Linux AppImage 打包了 macOS 平台的 Mach-O 通用二进制文件(Universal Binary),而非 Linux 所需的 ELF 格式可执行文件。同时,资源目录中缺失了适用于 Linux 系统的 aria2c 副本,导致 Linux 内核在尝试 execve 时返回 ENOEXEC (32)。
临时解决方案
目前 Arch Linux 用户(及其其他发行版用户)可以通过安装系统原生的 aria2 并确保其路径在搜索范围内,或手动替换提取目录中的二进制文件来绕过此问题:
sudo pacman -S aria2