Linux系统下软件安装包主流打包方式分为四类:通用Tar源码压缩包、RPM包(CentOS/RHEL)、DEB包(Ubuntu/Debian)、编译二进制包。本文整理各类型标准化打包流程、适用场景及实操步骤,适配软件开发、嵌入式设备、服务器部署等场景。

一、通用打包:Tar.gz 二进制安装包(全Linux通用)

适用所有Linux发行版,无系统限制,是最基础、通用性最强的打包方式,无需复杂编译配置,适合快速部署自研程序。

1. 前期准备

完成程序编译,整理运行所需全部文件:可执行程序、配置文件、日志目录、依赖库、启动脚本等,统一归集到单独文件夹。

2. 详细打包步骤

步骤1:创建程序根目录,规整文件结构


mkdir -p /opt/myapp/{bin,conf,log,lib,script} # 拷贝编译好的程序、配置、脚本至对应目录

步骤2:进入上级目录,执行打包压缩


tar -zcvf myapp-v1.0-linux.tar.gz myapp/

参数说明:z(gzip压缩)、c(创建包)、v(显示过程)、f(指定包名)

步骤3:打包后校验(可选)


tar -ztvf myapp-v1.0-linux.tar.gz

3. 配套部署脚本(可选)

可编写install.sh、uninstall.sh安装卸载脚本,实现一键部署、开机自启配置,提升使用便捷性。

二、源码包打包(Source Tar包,开源通用)

用于发布开源项目,包含完整源码、Makefile、CMakeLists、README、授权文件,供用户本地编译安装。

实操步骤


# 1. 清理编译缓存 make clean # 2. 归集源码核心文件 # 3. 打包源码 tar -zcvf myapp-src-v1.0.tar.gz 源码目录/

用户安装流程:解压 → ./configure/cmake → make编译 → make install安装。

三、RPM包打包(CentOS/RHEL/Fedora 专用)

RedHat系列系统标准安装包,支持版本管理、依赖校验、一键安装卸载,适合企业服务器部署。

1. 环境安装


yum install rpm-build rpmdevtools -y

2. 构建打包目录结构


rpmdev-setuptree

自动生成目录:~/rpmbuild/{BUILD,BUILDROOT,RPMS,SRPMS,SPECS,SOURCES}

3. 核心打包步骤

1)将源码/二进制压缩包放入 SOURCES 目录;

2)在 SPECS 目录编写 .spec 配置文件(定义软件名、版本、安装路径、依赖、启停脚本、文件清单);

3)执行打包编译:


rpmbuild -ba ~/rpmbuild/SPECS/myapp.spec

4)成品输出:RPMS目录下生成对应架构(x86_64/aarch64)的rpm安装包。

安装命令:yum localinstall xxx.rpm 或 rpm -ivh xxx.rpm

四、DEB包打包(Ubuntu/Debian 专用)

Debian系列系统标准安装包,适配桌面端、Ubuntu服务器,支持apt依赖管理。

1. 目录规范

创建标准化程序目录,严格遵循系统安装路径规范:


myapp-deb/ ├── usr/local/bin/ # 可执行程序 ├── etc/myapp/ # 配置文件 ├── var/log/myapp/ # 日志目录 └── DEBIAN/ # 打包控制目录(手动创建)

2. 编写控制文件

在DEBIAN目录新建 control 文件,填写软件名称、版本、架构、依赖、描述、作者信息。

3. 执行打包命令


dpkg -b myapp-deb/ myapp-v1.0-amd64.deb

安装命令:dpkg -i xxx.deb(依赖缺失可执行 apt -f install 修复)

五、四种打包方式选型对比

1. Tar.gz二进制包:跨所有Linux系统、无依赖限制、打包简单,适合自研程序、嵌入式设备;

2. 源码Tar包:开源发布、跨平台编译使用,适合开源项目交付;

3. RPM包:CentOS企业服务器专用,支持依赖管理、版本升级;

4. DEB包:Ubuntu系统专用,适配桌面及云服务器场景。

六、通用打包注意事项

1. 打包前清理调试日志、冗余文件、编译缓存,缩小安装包体积;

2. 明确区分x86_64、aarch64架构,包名标注架构及版本,避免混用;

3. 商业/正式交付包需配套README、安装说明、启停命令、日志路径说明;

4. 二进制打包需排查动态依赖,可通过ldd命令检查依赖库,缺失则一并打包。

更多推荐