这是一篇完全由Qwen撰写的文章

1. 问题现象

在 Debian 系统下运行 AlgerMusicPlayer 音乐播放器时,终端启动报错,程序无法打开。

错误日志关键信息:

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Could not load the "sharp" module using the linux-x64 runtime
ERR_DLOPEN_FAILED: libvips-cpp.so.8.17.3: 无法打开共享对象文件:没有那个文件或目录

2. 环境信息

  • 操作系统: Debian 13 (Trixie)

  • 软件: AlgerMusicPlayer (基于 Electron 开发)

  • 缺失组件: libvips (图像处理库)

3. 错误分析

该播放器使用了 sharp 模块来处理图片,而 sharp 依赖底层的 libvips 库。
报错原因通常有两种:

  1. 系统未安装 libvips 库。

  2. 系统安装的 libvips 版本与软件硬编码要求的版本不一致(例如软件要找 8.17.3 版本,但系统源里只有 8.14.x 版本)。

4. 解决方案

第一步:安装系统自带的 libvips 库

不要手动编译源码,直接使用包管理器安装运行库。

sudo apt update
sudo apt install libvips42 libvips-tools

第二步:检查实际安装的版本

安装完成后,查看系统中实际存在的 libvips 库文件版本。

ls -l /usr/lib/x86_64-linux-gnu/libvips-cpp.so.*
ls -l /usr/lib/x86_64-linux-gnu/libvips.so.*

示例输出:

/usr/lib/x86_64-linux-gnu/libvips-cpp.so.42 -> libvips-cpp.so.42.16.1
/usr/lib/x86_64-linux-gnu/libvips.so.42 -> libvips.so.42.16.1

注意:你的版本号可能不同,请以实际查询结果为准。

第三步:创建软链接(版本欺骗)

如果软件强制要求特定版本(如 8.17.3),而系统安装的是其他版本(如 42.16.1),可以通过创建软链接让程序认为找到了所需版本。

执行命令:

# 链接 libvips-cpp.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libvips-cpp.so.42.16.1 /usr/lib/x86_64-linux-gnu/libvips-cpp.so.8.17.3

# 链接 libvips.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libvips.so.42.16.1 /usr/lib/x86_64-linux-gnu/libvips.so.8.17.3

请将命令中的文件名替换为你第二步查到的实际文件名。

第四步:刷新动态链接库缓存

sudo ldconfig

第五步:重新启动软件

algermusicplayer

5. 验证结果

如果启动后看到以下日志,说明成功:

  • MUSIC API STARTED on port 30488

  • [OK] /album/newest... (API 请求正常)

  • GPU 加速已启用

  • 主窗口正常弹出

6. 常见日志警告说明

启动后终端可能会打印一些警告信息,通常可以忽略,不影响使用:

  1. 保存 B 站 cookies 失败 (Error: ENOTDIR)

    • 原因: 软件试图在安装目录 (/opt/…) 写入缓存文件,但该目录只读。

    • 处理: 忽略。软件会自动使用内存缓存或用户目录缓存,只要 API 请求显示 [OK] 即可。

  2. NSS error code: -8018

    • 原因: Electron 应用在 Linux 下的证书加载警告。

    • 处理: 忽略。不影响播放功能。

  3. 大量窗口状态保存日志 (state IsNormal…)

    • 原因: 调整窗口大小时触发的正常状态记录。

    • 处理: 忽略。

7. 备注

  • 该方法适用于大多数基于 Electron 且依赖 sharp 模块的 Linux 应用。

  • 如果后续软件更新修复了版本依赖,可以删除创建的软链接文件。

  • 建议通过应用菜单启动软件,若需在终端后台运行,可使用 algermusicplayer &