目录
一、构建deb包
1.1 control文件
1.2 compat文件
1.3 changelog
1.4 rules
二、构建deb包常用命令
构建
清理打包临时文件
新建版本
安装编译依赖
问题一:dpkg-checkbuilddeps: error: Unmet build dependencies: build-essential:native
统信操作系统有自己的商城,因此我们所说的发布其实就是将软件构建成deb包,然后将其上传到应用商店后台,通过审核后用户就能够在应用商店中下载软件了。
软件开发完成后如何打包成deb包也是软件发布的关键步骤。
一、构建deb包
构建命令如下:
在软件的主目录中构建debian名称的文件目录,debian文件目录的名字是固定的,因此不要改动。在debian目录中我们最少需要构建一下几个文件。以下文件名称都是固定的。
| 文件名称 | 作用 | 是否必要 |
|---|---|---|
| control | 指明与构建deb包相关的信息,例如运行依赖关系,编译依赖关系,构建的deb包名称,维护者名称,构建包的版本,构建包的名称,构建包的描述等。 | 必要 |
| compat | 定义兼容级别,具体作用不详,反正我就写9 | 必要 |
| changelog | 版本日志,可以通过dch命令添加。 | 必要 |
| rules | 编译命令,在构建项目时使用该命令编译构建。 | 必要 |
1.1 control 文件
1.1 control文件
《扫雷》control文件样例
Source: minesweeper
Section: utils
Priority: optional
Maintainer: arv000
Build-Depends:
debhelper (>= 11),
cmake,
Standards-Version: 1.0.0
Package: minesweeper
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
Description: 扫雷游戏.
扫雷游戏.
Package:指该软件包的名字。如果你的软件包名称有两个词,用一个连字符(-)把它们连起来。软件包的名称只能有小写的英文字母,数字(不管你相信不相信)以及"+"和"-"。
Version:程序的版本。确保这里的值不包括连字符。
Section:列出了你的软件属于的类别,可能的值包括admin(管理),games(游戏),gnome,kde,mail(电子邮件),misc(杂项)<译者注:misc是miscellaneous的简称>,net(网络),sound(声音),text(文本),utils(实用工具)和web(万维网)。
Priority:声明这个包的优先级(大部分的时候使用optional(可选的))。
Architecture:是该程序可运行的CPU架构(可能的值为i386,amd64和powerpc)<译者注:此处虽然是专有名词,但是由于linux是大小写敏感的,所以文件内还是应该小写>。any表示任意架构
Eseential:指该软件包是否是必须的(大部分的时候不是)。
Depends:意味着要运行这个程序必须拥有的程序或者库。
Build-Depends:编译程序时需要的依赖,注意和Depends的区别。编译前我们可能不知道该软件的依赖关系。如果已经配置号的编译依赖。我们可以使用以下命令自动安装依赖(太方便了)。
sudo apt build-deb .
Maintainer:就是你(写上你的名字,后面的方括号"<>"里留下你的电子邮件地址)。
Conflicts:表示跟这个程序冲突的软件。
Replaces:表明哪些软件包将被这个程序取代。
Description:显示你的描述。
1.2 compat文件
略
1.3 changelog
文件样例如下:
minesweeper (1.0.0) unstable; urgency=medium * Non-maintainer upload. * -- arv000 Fri, 15 Apr 2022 16:34:51 +0800
在工程目录使用dch命令可以自动新增changelog的记录。
1.4 rules
rules⽂件,实际上是⼀个Makefile格式的脚本⽂件, 第⼀⾏就是:#!/usr/bin/make -f。默认的都有: %: dh $@ 其中的百分号意味
着“任何 targets”, 它会以 target 名称作参数调⽤单个程序 dh。 dh 命令是⼀个包装脚本,它会根据参数执⾏妥当的 dh_* 程序序列。
⼀般的tar包源码都有configure, 这时可以执⾏dh_auto_config进⾏config,它实际上就是直接调⽤./configure。 然后执⾏
dh_auto_build编译。
rules⽂件⼀般会包含很多override_,这时对默认target的替换。
QT5
#!/usr/bin/make -f export QT_SELECT=qt5 include /usr/share/dpkg/default.mk %: dh $@
CMakeList
#!/usr/bin/make -f
override_dh_auto_configure:
dh_auto_configure --
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_SAFETYTEST_ARG="CMAKE_SAFETYTEST_ARG_OFF"
-DAPP_VERSION=$(DEB_VERSION_UPSTREAM) -DVERSION=$(DEB_VERSION_UPSTREAM)
%:
dh $@ --parallel
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
二、构建deb包常用命令
构建
dpkg-buildpakeage
dpkg-buildpakeage
构建成功后会生成beb包
清理打包临时文件
dh clean
新建版本
dch
安装编译依赖
sudo apt build-dep .
dch
安装编译依赖
sudo apt build-dep .
问题一:dpkg-checkbuilddeps: error: Unmet build dependencies: build-essential:native
解决方法
sudo apt-get install build-essential三、软件发布
登录https://www.chinauos.com/
按照要求上传
通过审核后就可以在应用商店看到我们的应用了



