Debian_QT软件开发_deb打包发布
本文是依赖《Debian_QT软件开发_QT程序打包》
一文。
1 搭建打包环境
1.1 安装打包工具
2 构建软件包
2.1 创建软件包目录
2.1.1 使用以下脚本build_dir.sh
创建打包目录
注意:构建软件包目录,需要符合<包名>-<版本>
格式!!!例如:笔者创建的文件夹ipcapture-1.0.0
,此处必须要按照所说的格式去创建,否则构建软件包会失败。
#!/bin/bash
step=0
PACK_DIR_NAME=
read_user_input() {
local result=
while true
do
read -p "$1" result && {
if [ ! $result ]; then
echo "输入不能为空!!!请重新输入!!!"
else
break
fi
}
done
echo "$result"
}
step_printf() {
echo "[$step] $1"
let "step++"
}
if [ $# -eq 0 ]; then
PACK_DIR_NAME=$(read_user_input "请创建打包目录:")
else
PACK_DIR_NAME=$1
fi
step_printf "构建软件包目录结构"
mkdir -p $PACK_DIR_NAME/opt/
mkdir -p $PACK_DIR_NAME/usr/share/applications
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/scalable/apps
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/256x256/apps
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/128x128/apps
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/64x64/apps
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/32x32/apps
mkdir -p $PACK_DIR_NAME/usr/share/icons/hicolor/16x16/apps
step_printf "软件包目录构建结束"
- 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.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
2.1.2 补充软件包内容
安装包安装时,会根据软件包目录结构进行安装的。以下将会讲解完善哪些内容。
- 完善软件包目录
opt/
将待打包的文件夹拷贝到软件包目录下opt/
中,软件包发布后,安装成功会在系统/opt
目录下创建该目录的。
- 添加
.desktop
桌面配置文件
将.desktop
文件拷贝到软件包目录下usr/share/applications
,安装包安装时,会自动拷贝.desktop
文件到系统目录下/usr/share/applications
- 将软件图标复制到软件包
usr/share/icons/hicolor/scalable/apps
中
2.1.3 软件包目录下构建debian
目录
- 进入软件包目录,使用
dh_make
构建debian
目录
- 删除用不到的文件
- 修改
debian/control
文件
Source: ipcapture
Section: utils
Priority: optional
Maintainer: sanqian <493965614@qq.com>
Build-Depends: debhelper-compat (= 12)
Standards-Version: 4.4.1
#Homepage: <insert the upstream URL, if relevant>
#Vcs-Browser: https://salsa.debian.org/debian/ipcapture
#Vcs-Git: https://salsa.debian.org/debian/ipcapture.git
Package: ipcapture
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 创建
/debian/install
文件
在debian目录中创建install
,install
文件会被dh_install
安装,可以指定各个文件的安装路径。
- 创建
/debian/postinst
脚本
- 创建
/debian/postrm
脚本
- 修改
/debian/rules
文件
以下有#新增
表明的,都是新增的,其它的使用默认。
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
export DH_VERBOSE = 1 #新增
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
# export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
# export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
%:
dh $@
override_dh_auto_build: #新增
override_dh_shlibdeps: #新增
override_dh_strip: #新增
# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
#override_dh_auto_configure:
# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
- 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.
2.2 使用 debuild
构建软件包
在软件包目录下执行:sudo debuild -u -us -uc -b
。
-
-i
:忽略 Git 中.gitignore
文件中列出的文件的变更。这个选项确保在构建软件包时,排除了在.gitignore
中指定的那些不需要包含在内的文件,例如生成的文件或者开发环境特定的文件。 -
-us
:不对源代码包进行签名。通常情况下,创建 Debian 软件包时可以使用 GPG 密钥对源代码包进行签名,以确保其真实性和完整性。使用-us
选项跳过了这个签名步骤。 -
-uc
:不对.changes
文件进行签名。.changes
文件在打包过程中生成,包含有关软件包的版本、发布信息以及包含的文件等元数据。通常情况下,也可以使用 GPG 密钥对.changes
文件进行签名以验证其真实性。使用-uc
跳过了对.changes
文件进行签名的步骤。 -
-b
:仅构建二进制软件包。使用-b
选项告诉debuild
只生成二进制软件包,而不重新构建源代码包本身。这意味着假设源代码包已经正确配置和构建完成,现在只需生成最终的二进制软件包(.deb 文件)。
s@s-pc:~/IPAudioCapture/script/ipcapture-1.0.0$ sudo debuild -i -us -uc -b
dpkg-buildpackage -us -uc -ui -i -b
dpkg-buildpackage: info: 源码包 ipcapture
dpkg-buildpackage: info: 源码版本 1.0.0-1
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: 源码修改者 sanqian <493965614@qq.com>
dpkg-source -i --before-build .
dpkg-buildpackage: info: 主机架构 amd64
debian/rules clean
dh clean
dh_clean
debian/rules build
dh build
dh_update_autotools_config
dh_autoreconf
create-stamp debian/debhelper-build-stamp
debian/rules binary
dh binary
dh_testroot
dh_prep
dh_install
dh_installdocs
dh_installchangelogs
dh_icons
dh_perl
dh_link
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_missing
dh_dwz
dwz: debian/ipcapture/opt/ipcapture/IPAudioCapture: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libFLAC.so.8: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Core.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5DBus.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Gui.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Network.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Qml.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Quick.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Svg.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5VirtualKeyboard.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5WebSockets.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5Widgets.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libQt5XcbQpa.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libXau.so.6: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libXdmcp.so.6: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libXext.so.6: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libXrender.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libasyncns.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libavcodec.so.60: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libavformat.so.60: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libavutil.so.58: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libbsd.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libdbus-1.so.3: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libfdk-aac.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libgcrypt.so.20: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libglib-2.0.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libglog.so.2: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libgthread-2.0.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libicudata.so.56: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libicui18n.so.56: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libicuuc.so.56: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libjsoncpp.so.25: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/liblz4.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/liblzma.so.5: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libnsl.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libnuma.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libogg.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libpcre.so.3: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libpng16.so.16: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libportaudio.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libpulse.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libpulsecommon-13.99.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libsndfile.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libswresample.so.4: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libsystemd.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libvorbis.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libvorbisenc.so.2: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libwrap.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libx264.so.155: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libx265.so.179: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libxcb-glx.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libxcb-xfixes.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libxcb-xkb.so.1: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libxkbcommon-x11.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/lib/libxkbcommon.so.0: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/bearer/libqconnmanbearer.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/bearer/libqgenericbearer.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/bearer/libqnmbearer.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/iconengines/libqsvgicon.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqgif.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqicns.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqico.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqjpeg.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqsvg.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqtga.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqtiff.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqwbmp.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/imageformats/libqwebp.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/platforms/libqxcb.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/xcbglintegrations/libqxcb-egl-integration.so: .debug_info section not present
dwz: debian/ipcapture/opt/ipcapture/plugins/xcbglintegrations/libqxcb-glx-integration.so: .debug_info section not present
dwz: Too few files for multifile optimization
dh_dwz: warning: No dwz multifile created, but not explicitly requested either so ignoring it.
dh_dwz: warning: Common issues include no debug information at all (missing -g) and
dh_dwz: warning: compressed debug information (#931891).
dh_makeshlibs
dh_installdeb
dh_gencontrol
dpkg-gencontrol: 警告: Depends field of package ipcapture: substitution variable ${shlibs:Depends} used, but is not defined
dh_md5sums
dh_builddeb
dpkg-deb: 正在 '../ipcapture_1.0.0-1_amd64.deb' 中构建软件包 'ipcapture'。
dpkg-genbuildinfo --build=binary
dpkg-genchanges --build=binary >../ipcapture_1.0.0-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source -i --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
- 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.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
2.2.1 安装验证
在软件包目录上层即可找到构建好deb
安装包,执行以下操作安装验证: