文章

使用 dpkg-deb 打包一个简易的 deb 包

使用 dpkg-deb 打包一个简易的 deb 包

dpkg-deb 是 Debian 及其衍生系统(如 Ubuntu)中用于打包 deb 包的工具, 下面举个简单的例子。

包结构

1
2
3
4
5
6
7
com.xxx.myapp
├── bin
│   └── myapp
├── lib
│   └── libmy_lib.so
└── config
    └── config.json

打包脚本

本文假设 deb 包的安装路径是 /opt/workspace 目录

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
#!/bin/bash
## 定义包名、版本号、描述、作者、依赖关系等
install_dir="/opt/workspace"
pkg_name="com.xxx.myapp"
app_name="myapp"
pkg_version="1.0.0"
pkg_description="My App"
pkg_author="xiongyi"
pkg_depends=""
maintainer="xiongyi"
section="base"
priority="optional"
architecture="amd64"
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 进行授权