所有的出站邮件都已被管理员全局禁用。任何类型的邮件通知都不会被发出。

项目相关:MyCard-3.0.77.AppImage
运行环境:Arch Linux (x86_64)
错误现象:在使用 MyCard 下载 YGOPRO2 时,调用 aria2c 失败,终端返回 32 错误码。

问题描述

在 Linux 环境下运行 MyCard 客户端并尝试下载资源时,程序无法启动内置的 aria2c 进行下载任务。经过提取 AppImage 内容分析,确认该版本打包的可执行文件并非 Linux ELF 格式。

复现步骤

  1. 在 Arch Linux (大概率任意发行版上)上运行 MyCard-3.0.77.AppImage
  2. 尝试点击下载/更新 YGOPRO2。
  3. 观察到无法下载,系统报告执行错误。

调试信息

通过提取 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

app/download.service.tsgetAria2cPath() 函数中:

        case 'linux':
            return '/usr/bin/aria2c';

看起来 MyCard Linux 端是需要用户手动下载 aria2c 的?

同时还有个小 BUG ,~/.confg/MyCardLibrary 需要手动创建目录,否则还是会下载失败。