Linux版wiliwili打包指南:Debian软件包制作
wiliwili是一款专为手柄控制设计的第三方跨平台B站客户端,支持在PC、PSVita、PS4和Nintendo Switch等多种设备上运行。本文将通过需求分析、环境配置、核心流程、优化技巧和问题排查五个环节,帮助你从零开始制作适用于Debian系统的软件包,让更多Linux用户能够轻松体验这款应用。
一、需求分析:为什么需要打包Debian软件包
在Linux系统中,软件包是应用程序分发的主要形式。通过制作Debian软件包,用户可以通过apt等包管理工具一键安装wiliwili,无需手动处理依赖关系和文件路径配置。这不仅提升了用户体验,也便于应用的更新和维护。
预打包检查清单
开始前请确认以下条件已满足:
| 检查项 | 说明 | 状态 |
|---|---|---|
| 系统环境 | Debian 10+ 或 Ubuntu 18.04+ | ☐ |
| 开发工具 | git、cmake、g++ 等编译工具 | ☐ |
| 依赖库 | libass、libmpv、libsdl2 等运行依赖 | ☐ |
| 项目源码 | 已克隆 wiliwili 仓库 | ☐ |
二、环境配置:搭建打包工作环境
环境配置是打包过程的基础,确保系统中安装了所有必要的工具和依赖项,为后续的编译和打包做好准备。
2.1 安装基础工具
首先安装打包所需的核心工具,包括编译工具链和Debian打包工具:
# 安装编译工具和依赖检查工具
sudo apt update && sudo apt install -y build-essential cmake git pkg-config
# 安装Debian打包工具
sudo apt install -y dpkg-dev dh-make fakeroot
💡 技巧提示:使用aptitude代替apt可以更智能地解决依赖冲突,安装命令:sudo apt install aptitude
2.2 安装运行必备组件
wiliwili依赖多个系统库,通过以下命令安装:
# 安装核心依赖库
sudo apt install -y libass9 libmpv1 libsdl2-2.0-0 libssl1.1 libwebp6 \
libuchardet0 libpulse0 libdbus-1-3 libx11-6
⚠️ 注意:不同Debian版本的库版本可能不同,例如Debian 11使用libssl3,需要根据实际系统调整依赖名称。
2.3 获取项目源码
克隆wiliwili项目源码到本地:
git clone https://gitcode.com/GitHub_Trending/wi/wiliwili
cd wiliwili
三、核心流程:三阶段打包工作流
将打包过程分解为准备、构建和封装三个阶段,每个阶段专注于特定任务,使复杂的打包过程变得清晰可控。
3.1 准备阶段:整理打包资源
此阶段主要完成图标生成、桌面文件准备等打包前的资源整理工作。
3.1.1 生成应用图标
项目提供了图标生成脚本,可自动创建不同尺寸的图标文件:
# 进入脚本目录
cd scripts/linux
# 赋予执行权限并运行脚本
chmod +x gen_icons.sh
./gen_icons.sh
执行完成后,在icons目录下会生成16x16、24x24、32x32等多种尺寸的图标文件,如icons/16x16/cn.xfangfang.wiliwili.png。
3.1.2 准备桌面文件
桌面文件cn.xfangfang.wiliwili.desktop定义了应用在桌面环境中的显示和启动方式,位于scripts/linux目录下,内容如下:
[Desktop Entry]
Name=wiliwili
Comment=A 3rd party bilibili client
Exec=wiliwili
Icon=cn.xfangfang.wiliwili
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Video;
3.2 构建阶段:编译应用程序
使用CMake构建系统编译wiliwili应用程序,生成可执行文件。
# 返回项目根目录
cd ../../
# 创建构建目录并进入
mkdir -p build && cd build
# 生成Makefile,指定桌面平台
cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release
# 多线程编译
make -j$(nproc) # -j$(nproc)表示使用所有可用CPU核心加速编译
💡 技巧提示:如果编译过程中遇到依赖缺失,使用dpkg -S命令查找缺失库的安装包,例如:dpkg -S libmpv.so.1
3.3 封装阶段:创建Debian软件包
按照Debian软件包规范,组织文件结构并生成.deb包。
3.3.1 构建目录结构
创建符合Debian标准的目录结构,将编译产物和资源文件放入正确位置:
# 创建打包工作目录
mkdir -p wiliwili-deb/DEBIAN
mkdir -p wiliwili-deb/usr/{bin,share/applications,share/icons/hicolor}
# 复制可执行文件
cp build/wiliwili wiliwili-deb/usr/bin/
# 复制桌面文件
cp scripts/linux/cn.xfangfang.wiliwili.desktop wiliwili-deb/usr/share/applications/
# 复制图标文件
cp -r scripts/linux/icons/* wiliwili-deb/usr/share/icons/hicolor/
3.3.2 创建控制文件
控制文件control是Debian包的核心元数据,创建并编辑wiliwili-deb/DEBIAN/control:
Section: video
Priority: optional
Maintainer: Your Name <your.email@example.com>
Version: 1.5.2-1
Homepage: https://xfangfang.github.io/wiliwili/
Package: wiliwili
Architecture: amd64 # 根据实际架构修改,如arm64、i386
Depends: libass9, libmpv1, libsdl2-2.0-0, libssl1.1, libwebp6
Description: A third-party Bilibili client designed for controller users
3.3.3 生成Debian软件包
使用dpkg-deb命令构建deb包:
# 生成deb包,--build参数指定打包目录
dpkg-deb --build wiliwili-deb
成功后会在当前目录生成wiliwili-deb.deb文件,可通过以下命令安装测试:
sudo dpkg -i wiliwili-deb.deb
wiliwili应用主界面展示,显示推荐视频和直播内容
四、优化技巧:提升软件包质量
4.1 跨架构适配方案
为不同CPU架构(如amd64、arm64)打包,需要调整编译和控制文件:
-
交叉编译环境:使用
debootstrap创建目标架构的根文件系统sudo debootstrap --arch=arm64 buster ./arm64-root http://deb.debian.org/debian -
修改控制文件:将
Architecture字段改为目标架构,如arm64 -
测试架构兼容性:使用
qemu-user-static在x86主机上运行arm程序sudo apt install qemu-user-static sudo cp /usr/bin/qemu-aarch64-static ./arm64-root/usr/bin/
4.2 最小化测试环境搭建
使用Docker快速创建干净的测试环境:
# 拉取Debian基础镜像
docker pull debian:buster
# 运行容器并挂载当前目录
docker run -it -v $(pwd):/work debian:buster /bin/bash
# 在容器内安装依赖并测试
cd /work
dpkg -i wiliwili-deb.deb || apt -f install # 自动修复依赖问题
五、问题排查:常见打包失败案例库
5.1 依赖关系错误
症状:安装时提示"依赖关系未满足"
解决方案:
- 使用
apt-cache depends wiliwili检查依赖链 - 在控制文件中添加缺失的依赖项
- 对于版本冲突,使用
Depends: libssl-dev (>= 1.1.0)指定版本范围
5.2 图标不显示
症状:安装后应用图标显示为默认图标
解决方案:
- 确认图标路径正确:
/usr/share/icons/hicolor/尺寸/apps/图标名.png - 更新图标缓存:
sudo update-icon-caches /usr/share/icons/hicolor/
5.3 可执行文件权限问题
症状:运行时提示"权限被拒绝"
解决方案:
- 检查可执行文件权限:
chmod 755 wiliwili-deb/usr/bin/wiliwili - 在控制文件中添加
Installed-Size字段,指定安装大小
5.4 编译失败:缺少头文件
症状:编译时提示"fatal error: mpv/client.h: 没有那个文件或目录"
解决方案:
- 安装开发包:
sudo apt install libmpv-dev - 重新运行CMake生成Makefile
wiliwili视频播放界面,显示视频内容和弹幕交互
通过本文介绍的方法,你可以为Linux系统制作高质量的wiliwili Debian软件包。无论是桌面用户还是嵌入式设备用户,都能通过标准的包管理工具轻松安装和使用这款专为手柄优化的B站客户端。如果在打包过程中遇到其他问题,欢迎在项目的issue区交流讨论。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust098- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00

