4个步骤搞定wiliwili Debian软件包制作:从环境到发布
wiliwili是一款专为手柄控制设计的第三方跨平台B站客户端,支持PC、PSVita、PS4和Nintendo Switch等多种设备。本文将通过"需求分析→环境配置→分步实施→验证优化"四个阶段,详细介绍如何在Linux系统中制作wiliwili的Debian软件包(扩展名为.deb的二进制安装文件),以便在Debian及其衍生系统上轻松安装和使用。
💡 核心价值:通过系统化流程将开源项目转化为标准化安装包,降低用户使用门槛,同时确保软件在不同Linux环境中的一致性和可靠性。
1/4 需求分析:明确打包目标与范围
在开始打包工作前,需要清晰定义目标和范围,这将直接影响后续的环境配置和实施步骤。
软件包目标定位
wiliwili的Debian软件包应满足以下核心需求:
- 支持主流Debian衍生系统(如Ubuntu 20.04+、Debian 11+)
- 包含完整的应用程序功能和资源文件
- 提供标准桌面环境集成(图标、启动器)
- 确保手柄控制功能正常工作
- 解决依赖关系冲突问题
关键文件识别
项目中与Linux打包相关的核心文件位于以下路径:
- 桌面集成文件:项目根目录下的scripts/linux文件夹,包含桌面快捷方式和图标资源
- 打包配置模板:scripts/deb/switchroot-bionic目录提供了Debian控制文件参考
- 构建脚本参考:scripts/build_mac.sh可作为Linux构建流程的基础

图1:wiliwili应用主界面展示,显示了视频推荐和播放界面
2/4 环境配置:搭建打包工作环境
系统要求
确保你的系统满足以下条件:
- 64位Debian或Ubuntu系统(推荐Ubuntu 20.04 LTS或Debian 11)
- 至少2GB内存和10GB可用磁盘空间
- 网络连接(用于下载依赖和源码)
安装必要工具
打开终端,执行以下命令安装打包所需的工具集:
# 更新软件源
sudo apt update
# 安装打包工具和依赖
sudo apt install -y build-essential cmake dpkg-dev debhelper dh-make \
libass-dev libdbus-1-dev libx11-dev libv4l-dev libpulse-dev \
libuchardet-dev libwebp-dev libssl-dev
常见问题:依赖安装失败
如果遇到"无法定位软件包"错误,可能是因为你的系统版本与软件包名称不匹配。尝试以下解决方案: 1. 检查是否启用了Universe仓库(对于Ubuntu) 2. 使用`sudo aptitude install `尝试自动解决依赖冲突 3. 对于较新的Debian版本,可能需要将libssl1.1替换为libssl3获取项目源码
使用Git克隆wiliwili项目源码到本地:
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/wi/wiliwili
cd wiliwili
3/4 分步实施:构建与打包全过程
步骤1:编译应用程序
首先需要将源代码编译为可执行程序:
# 创建并进入构建目录
mkdir -p build && cd build
# 生成Makefile,指定桌面平台和发布模式
cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release
# 多线程编译(nproc会自动检测CPU核心数)
make -j$(nproc)
常见问题:编译失败
如果遇到编译错误,尝试以下解决方法: 1. 检查是否安装了所有必要的依赖库 2. 清除构建目录并重新编译:`rm -rf build && mkdir build && cd build && cmake .. ...` 3. 对于SSL相关错误,确认已安装libssl-dev并检查版本兼容性步骤2:准备打包资源
生成图标文件
项目提供了图标生成脚本,可创建不同尺寸的应用图标:
# 进入脚本目录
cd ../scripts/linux
# 赋予执行权限并运行脚本
chmod +x gen_icons.sh
./gen_icons.sh
此脚本会在icons目录下生成16x16、24x24、32x32等多种尺寸的图标文件,这些图标将用于桌面环境显示。
准备Debian打包结构
创建标准的Debian打包目录结构:
# 返回项目根目录
cd ../../
# 创建打包工作目录
mkdir -p wiliwili-deb/DEBIAN
mkdir -p wiliwili-deb/usr/bin
mkdir -p wiliwili-deb/usr/share/applications
mkdir -p wiliwili-deb/usr/share/icons/hicolor
步骤3:组织打包文件
复制可执行文件
将编译好的可执行文件复制到打包目录:
# 复制主程序
cp build/wiliwili wiliwili-deb/usr/bin/
复制桌面文件
桌面文件定义了应用在桌面环境中的显示和启动方式:
# 复制并修改桌面文件
cp scripts/linux/cn.xfangfang.wiliwili.desktop wiliwili-deb/usr/share/applications/
安装图标文件
将生成的图标文件安装到标准系统图标目录:
# 复制所有尺寸的图标
for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
mkdir -p wiliwili-deb/usr/share/icons/hicolor/$size/apps/
cp scripts/linux/icons/$size/cn.xfangfang.wiliwili.png \
wiliwili-deb/usr/share/icons/hicolor/$size/apps/
done
步骤4:创建Debian控制文件
生成control文件
创建Debian软件包的控制文件,定义软件包的基本信息和依赖关系:
# 创建控制文件
cat > wiliwili-deb/DEBIAN/control << EOF
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
Depends: libass9, libdbus-1-3, libx11-6, libv4l-0, libpulse0, libuchardet0, libwebp6, libssl3
Description: A third-party Bilibili client designed specifically for controller users
wiliwili is a cross-platform Bilibili client optimized for game controllers.
It supports multiple platforms including PC, PSVita, PS4 and Nintendo Switch.
EOF
⚠️ 注意:根据你的系统架构修改Architecture字段(如amd64、i386等),并确保Depends字段中的依赖库名称与目标系统匹配。
不同系统依赖差异对比
| 依赖项 | Debian 11 | Ubuntu 20.04 | Ubuntu 22.04 |
|---|---|---|---|
| SSL库 | libssl1.1 | libssl1.1 | libssl3 |
| WebP库 | libwebp6 | libwebp6 | libwebp7 |
| 最低GCC版本 | 8.3 | 9.3 | 11.2 |
步骤5:构建Debian软件包 📦
一切准备就绪后,使用dpkg-deb命令构建软件包:
# 构建deb包
dpkg-deb --build wiliwili-deb
如果一切顺利,当前目录将生成一个名为wiliwili-deb.deb的文件,这就是我们的Debian软件包。
4/4 验证优化:确保软件包质量
安装测试
在本地系统测试软件包安装:
# 安装软件包
sudo dpkg -i wiliwili-deb.deb
# 如果出现依赖问题,自动修复
sudo apt install -f
安装完成后,检查应用是否能正常启动:
- 在应用菜单中查找wiliwili图标并点击启动
- 或在终端执行
wiliwili命令
功能验证清单
验证以下核心功能是否正常工作:
- 应用启动是否正常
- 界面显示是否完整
- 视频播放功能是否正常
- 手柄控制是否响应
- 声音是否正常输出
- 网络连接是否正常
依赖检查
使用以下命令检查软件包的依赖关系是否完整:
# 检查依赖关系
dpkg -I wiliwili-deb.deb | grep Depends
# 检查已安装的依赖版本
dpkg -l libass9 libdbus-1-3 libx11-6 libpulse0
跨版本兼容小贴士 🔄
为确保软件包在不同Debian/Ubuntu版本上的兼容性:
-
依赖版本控制:
- 使用模糊版本号,如
libssl3而非libssl3=3.0.2-0ubuntu1 - 避免依赖过于新版本的库
- 使用模糊版本号,如
-
构建环境:
- 尽量在较低版本的系统上构建(如Ubuntu 20.04)
- 考虑使用Docker容器进行跨版本构建
-
架构支持:
- 为不同架构(amd64、arm64)分别构建软件包
- 在control文件中正确设置Architecture字段
自动化打包进阶指引 🤖
对于频繁更新的项目,建议设置CI/CD流程实现自动打包:
-
GitHub Actions配置:
- 创建
.github/workflows/deb-package.yml文件 - 定义触发条件(如标签推送或主分支更新)
- 配置构建环境和打包步骤
- 创建
-
自动化测试:
- 添加安装测试步骤
- 运行基本功能检查脚本
- 生成测试报告
-
发布流程:
- 自动将生成的deb包上传到GitHub Releases
- 配置PPA仓库实现自动更新
通过以上步骤,你已经完成了wiliwili Debian软件包的制作。这个过程不仅适用于wiliwili,也可作为其他开源项目打包的参考。随着项目的发展,记得定期更新软件包版本和依赖关系,以确保用户获得最佳体验。
如果在打包过程中遇到问题,可以查阅项目的官方文档或提交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