首页
/ 5步完成Linux软件包制作:从源码到可安装文件

5步完成Linux软件包制作:从源码到可安装文件

2026-04-22 09:34:35作者:牧宁李

🌟 核心价值:为什么选择Debian软件包

Linux软件包制作(Debian软件包,.deb格式安装文件)是开源项目分发的关键环节。对于wiliwili这款专为手柄控制设计的跨平台B站客户端而言,通过Debian软件包可以实现:

  • 简化安装流程:用户只需一条命令即可完成部署
  • 标准化依赖管理:自动处理系统库依赖关系
  • 跨发行版兼容:支持Debian、Ubuntu及其衍生系统
  • 版本控制:便于更新和回滚操作

wiliwili应用界面 图1:wiliwili客户端主界面展示,采用手柄优化的交互设计

🛠️ 环境配置:准备工作清单

基础工具链安装

sudo apt update && sudo apt install -y \
  build-essential cmake dpkg-dev dh-make \
  libass-dev libssl-dev libx11-dev libv4l-dev \
  libpulse-dev libuchardet-dev libwebp-dev

依赖版本兼容性对照表

依赖库 最低版本 推荐版本 备注
cmake 3.10 3.16+ 构建系统生成工具
libssl 1.1 1.1.1f+ 加密通信支持
libwebp 0.6 1.0.0+ 图像解码支持
dpkg-deb 1.19 1.20+ Debian打包工具

源码获取

git clone https://gitcode.com/GitHub_Trending/wi/wiliwili
cd wiliwili

🔄 流程拆解:从源码到软件包

1️⃣ 构建应用程序

项目采用CMake构建系统,针对Linux桌面环境需添加特定参数:

mkdir -p build && cd build
cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

构建完成后,可执行文件位于build/wiliwili

2️⃣ 打包目录结构准备

创建标准Debian打包目录树:

wiliwili-deb/
├── DEBIAN/
│   ├── control       # 软件包元数据
│   ├── postinst      # 安装后脚本
│   └── prerm         # 卸载前脚本
└── usr/
    ├── bin/          # 可执行文件
    ├── share/
    │   ├── applications/  # 桌面文件
    │   └── icons/         # 图标资源

3️⃣ 资源文件处理

图标生成与安装

cd scripts/linux
chmod +x gen_icons.sh
./gen_icons.sh

生成的图标需按尺寸安装到标准目录:

# 示例:安装16x16尺寸图标
mkdir -p ../wiliwili-deb/usr/share/icons/hicolor/16x16/apps/
cp icons/16x16/cn.xfangfang.wiliwili.png \
  ../wiliwili-deb/usr/share/icons/hicolor/16x16/apps/

桌面文件配置

编辑cn.xfangfang.wiliwili.desktop文件:

[Desktop Entry]
Name=wiliwili
Comment=手柄优化的B站客户端
Exec=/usr/bin/wiliwili
Icon=cn.xfangfang.wiliwili
Terminal=false
Type=Application
Categories=AudioVideo;Player;
Keywords=bilibili;video;player;

4️⃣ 控制文件编写

创建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
Depends: libass9, libdbus-1-3, libx11-6, libv4l-0, libpulse0, libuchardet0, libwebp6, libssl1.1
Description: 专为手柄控制设计的第三方B站客户端
 A modern Bilibili client optimized for game controllers,
 supporting multiple platforms including PC and game consoles.

5️⃣ 软件包构建

dpkg-deb --build wiliwili-deb

成功构建后将生成wiliwili-deb.deb文件,可通过以下命令安装:

sudo dpkg -i wiliwili-deb.deb

🔧 问题诊断矩阵:常见错误及解决方案

错误现象 可能原因 解决方案
构建失败:缺少MPV库 未安装libmpv-dev sudo apt install libmpv-dev
图标不显示 图标路径错误 确认安装到/usr/share/icons/hicolor对应尺寸目录
依赖缺失错误 控制文件依赖项不完整 使用dpkg-shlibdeps -O build/wiliwili自动生成依赖
软件包架构不匹配 编译架构与控制文件不符 检查Architecture字段与实际编译架构一致
桌面快捷方式无效 桌面文件路径错误 确认.desktop文件安装到/usr/share/applications

💡 提示:使用dpkg-deb --info wiliwili-deb.deb可检查软件包元数据,dpkg -c wiliwili-deb.deb可查看包内文件结构。

🌐 跨架构适配:多平台支持策略

amd64平台优化

# 添加amd64特定优化
cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_CXX_FLAGS="-m64 -mtune=generic -O2"

armhf平台适配

# 安装armhf交叉编译工具链
sudo apt install -y g++-arm-linux-gnueabihf

# 交叉编译配置
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/arm-linux-gnueabihf.cmake \
  -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release

架构检测脚本

# 自动检测架构并设置相应参数
ARCH=$(dpkg --print-architecture)
if [ "$ARCH" = "amd64" ]; then
  CMAKE_ARCH_FLAGS="-m64 -mtune=generic"
elif [ "$ARCH" = "armhf" ]; then
  CMAKE_ARCH_FLAGS="-mfloat-abi=hard -mfpu=neon"
fi

🚀 扩展应用:自动化打包与分发

GitHub Actions配置示例

创建.github/workflows/deb-package.yml

name: Build Debian Package

on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Install dependencies
        run: |
          sudo apt update
          sudo apt install -y build-essential cmake dpkg-dev libass-dev libssl-dev
      
      - name: Build application
        run: |
          mkdir build && cd build
          cmake .. -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release
          make -j$(nproc)
      
      - name: Prepare package
        run: |
          bash scripts/linux/gen_icons.sh
          mkdir -p wiliwili-deb/usr/bin
          cp build/wiliwili wiliwili-deb/usr/bin/
          # 复制其他资源文件...
      
      - name: Build deb package
        run: dpkg-deb --build wiliwili-deb
      
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: wiliwili-deb
          path: wiliwili-deb.deb

打包后目录结构对比

打包前源码结构

wiliwili/
├── cmake/           # 构建配置
├── docs/            # 文档资源
├── library/         # 依赖库
├── scripts/         # 辅助脚本
│   ├── linux/       # Linux相关脚本
│   └── deb/         # Debian打包模板
└── wiliwili/        # 源代码
    ├── include/     # 头文件
    └── source/      # 实现代码

打包后文件结构

wiliwili-deb.deb/
├── DEBIAN/          # 包元数据
└── usr/
    ├── bin/
    │   └── wiliwili # 可执行文件
    ├── share/
    │   ├── applications/
    │   │   └── cn.xfangfang.wiliwili.desktop
    │   └── icons/   # 多尺寸图标

通过以上流程,我们完成了从源码到可安装Debian软件包的完整转换。这种打包方式不仅适用于wiliwili项目,也可作为其他跨平台开源项目的Linux分发方案参考。合理利用自动化工具和标准化流程,能显著提升开源项目的分发效率和用户体验。

登录后查看全文
热门项目推荐
相关项目推荐