4个步骤搞定Linux版wiliwili打包发布
2026-04-22 10:05:33作者:侯霆垣
从环境搭建到Debian软件包制作的全流程解析
wiliwili是一款专为手柄控制设计的跨平台B站客户端,支持多设备运行。本文将通过需求分析、核心流程、关键技巧和常见问题四个模块,详细介绍如何在Linux系统中完成该应用的Debian软件包制作,帮助开发者实现从源码到可安装软件的完整转化。
一、需求分析:明确打包核心要素
1.1 功能需求
- 可执行程序完整性:确保编译后的二进制文件包含所有核心功能模块
- 桌面环境集成:提供正确的桌面快捷方式和图标显示
- 依赖管理:自动处理运行时所需的系统库文件
- 架构适配:支持主流Linux架构(如amd64、arm64)
1.2 项目资源定位
- 构建配置:[CMakeLists.txt](项目根目录构建脚本)
- 桌面配置:[scripts/linux/cn.xfangfang.wiliwili.desktop](应用启动描述文件)
- 图标资源:[scripts/linux/icons/](多尺寸应用图标集合)
- 打包模板:[scripts/deb/switchroot-bionic/](Debian控制文件参考)
二、核心流程:从源码到软件包的转化
2.1 环境准备
🔧 操作要点:
- 安装基础编译工具链:
sudo apt install build-essential cmake git - 安装依赖库:
sudo apt install libmpv-dev libcurl4-openssl-dev libssl-dev libwebp-dev - 获取源码:
git clone https://gitcode.com/GitHub_Trending/wi/wiliwili
📝 注意事项:
- 确保系统已安装OpenGL开发库(如libgl1-mesa-dev)
- 建议使用Ubuntu 20.04或Debian 11及以上版本
2.2 应用程序构建
🔧 操作要点:
- 创建构建目录:
mkdir -p build && cd build - 生成Makefile:
cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release - 编译项目:
make -j$(nproc)
📝 注意事项:
- 编译过程需2GB以上内存,低配置系统建议减少并行任务数
- 若出现依赖错误,检查[CMakeLists.txt]中的依赖声明是否完整
2.3 打包资源整理
🔧 操作要点:
- 生成图标:
cd scripts/linux && chmod +x gen_icons.sh && ./gen_icons.sh - 创建Debian目录结构:
wiliwili-deb/ ├── DEBIAN/ │ ├── control │ ├── postinst │ └── prerm └── usr/ ├── bin/ ├── share/applications/ └── share/icons/hicolor/ - 复制文件到对应目录:
- 可执行文件→usr/bin/
- 桌面文件→usr/share/applications/
- 图标文件→usr/share/icons/hicolor/[尺寸]/apps/
📝 注意事项:
- 确保所有文件权限正确(可执行文件设为755)
- 图标尺寸需包含16x16、32x32、48x48、64x64、128x128和256x256
2.4 Debian包生成
🔧 操作要点:
- 编辑控制文件:修改DEBIAN/control中的版本号和架构信息
- 添加维护脚本:编写postinst(安装后)和prerm(卸载前)脚本
- 构建软件包:
dpkg-deb --build wiliwili-deb
📝 注意事项:
- 控制文件中Depends字段需根据目标系统调整依赖库版本
- 生成的.deb文件需通过
lintian工具检查潜在问题
图1:wiliwili客户端主界面展示,显示视频推荐和播放功能
三、关键技巧:提升打包质量的实用方法
3.1 依赖处理策略
- 使用
dpkg-shlibdeps自动分析运行时依赖:dpkg-shlibdeps -O wiliwili-deb/usr/bin/wiliwili - 对非标准依赖,可使用
dh_make工具生成debian目录框架
3.2 版本管理规范
- 版本号格式:主版本.次版本.修订号-发布号(如1.6.0-1)
- 在控制文件中使用
${DEB_VERSION_UPSTREAM}变量实现版本自动替换
3.3 测试验证方法
- 本地安装测试:
sudo dpkg -i wiliwili-deb.deb - 依赖检查:
ldd /usr/bin/wiliwili确认所有库文件都能正确加载 - 桌面集成测试:检查应用菜单是否显示、图标是否正常
四、常见问题:打包过程中的解决方案
4.1 编译错误
-
问题:MPV库链接失败 解决:安装libmpv-dev并确保版本≥0.32.0,或在cmake时指定MPV路径
-
问题:WebP支持缺失 解决:安装libwebp-dev并重新运行cmake
4.2 打包警告
-
问题:"缺少依赖信息" 解决:使用
dpkg-shlibdeps生成依赖列表并更新control文件 -
问题:"图标缓存未更新" 解决:在postinst脚本中添加
update-icon-caches /usr/share/icons/hicolor/*
五、兼容性测试清单
- ✅ Debian 11 (Bullseye) amd64
- ✅ Ubuntu 20.04 LTS amd64
- ✅ Ubuntu 22.04 LTS amd64
- ✅ Debian 11 arm64 (树莓派4)
- ⚠️ Ubuntu 18.04 LTS (需手动安装部分依赖)
六、版本迭代记录
- v1.5.0:初始打包支持,基础功能实现
- v1.5.2:修复图标显示问题,完善依赖声明
- v1.6.0:增加arm64架构支持,优化桌面集成
- v1.6.1:修复postinst脚本权限问题,提升兼容性
通过以上步骤,开发者可以系统地完成wiliwili的Debian软件包制作。建议在每次版本更新时,同步更新控制文件中的版本信息和依赖声明,确保软件包的质量和兼容性。如有复杂场景需求,可参考项目中提供的Dockerfile进行自动化构建流程设计。
登录后查看全文
热门项目推荐
相关项目推荐
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
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Dockerfile
701
4.51 K
Ascend Extension for PyTorch
Python
564
693
Claude 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 Started
Rust
542
98
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
957
954
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
411
338
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.6 K
939
Oohos_react_native
React Native鸿蒙化仓库
C++
340
387
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
128
209
昇腾LLM分布式训练框架
Python
150
177
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
140
221