文章

打包一个简易的 deb 包

Debian 软件包(.deb 文件)是 Debian Linux 发行版的标准软件包格式。本文将介绍如何打包一个简易的 deb 包。

包结构

1
2
3
4
5
6
7
build
├── bin
│   └── my_app
├── lib
│   └── libmy_lib.so
└── config
    └── config.json

打包脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
## 本文假设包安装到 /home/xxx/.Workspace 目录下

## 定义包名、版本号、描述、作者、依赖关系等
install_dir="/home/xxx/.Workspace"
pkg_name="my_app"
app_name="my_app"
pkg_version="1.0.0"
pkg_description="My App"
pkg_author="Jassim"
pkg_depends="libmy_lib.so"
maintainer="Jassim"
section="base"
priority="optional"
architecture="all"
pkg_dir=package

## 创建安装目录
mkdir -p ${pkg_dir}/${install_dir}/${pkg_name}/bin
mkdir -p ${pkg_dir}/${install_dir}/${pkg_name}/lib
mkdir -p ${pkg_dir}/${install_dir}/${pkg_name}/config

## 复制文件到安装目录
cp -r build/bin/* ${pkg_dir}/${install_dir}/${pkg_name}/bin
cp -r build/lib/* ${pkg_dir}/${install_dir}/${pkg_name}/lib
cp -r build/config/* ${pkg_dir}/${install_dir}/${pkg_name}/config

## 创建控制文件
mkdir -p $(pkg_dir)/DEBIAN
echo "Package: $(pkg_name)" > $(pkg_dir)/DEBIAN/control
echo "Version: $(pkg_version)" >> $(pkg_dir)/DEBIAN/control
echo "Section: $(section)" >> $(pkg_dir)/DEBIAN/control
echo "Priority: $(priority)" >> $(pkg_dir)/DEBIAN/control
echo "Architecture: $(architecture)" >> $(pkg_dir)/DEBIAN/control
echo "Depends: $(pkg_depends)" >> $(pkg_dir)/DEBIAN/control
echo "Maintainer: $(maintainer)" >> $(pkg_dir)/DEBIAN/control
echo "Description: $(pkg_description)" >> $(pkg_dir)/DEBIAN/control
fakeroot dpkg-deb --build $(pkg_dir) $(pkg_name)_$(pkg_version)_$(architecture).deb
rm -rf $(pkg_dir)
本文由作者按照 CC BY 4.0 进行授权