checkinstall 可在 make install 同时生成 deb/rpm 包,实现包管理器统一管理;debian/ubuntu 用 apt 安装,rhel/centos 需 epel 或手动下载,fedora 用 dnf;流程为 ./configure、make -j$(nproc)、sudo checkinstall;支持 -d/-r 指定包类型,-y 跳过交互,--pkgversion 规范版本号;生成后可用 dpkg/rpm 命令验证、安装、卸载和查询。

直接用 checkinstall 替换掉常规流程里的 make install,就能在安装的同时生成 deb 或 rpm 包,后续可用系统包管理器统一安装、查询、卸载,彻底避免手动安装后“删不干净”的问题。
安装 checkinstall 工具
不同发行版安装方式略有差异:
- Debian/Ubuntu:
sudo apt install checkinstall - RHEL/CentOS(需先启用 EPEL 或手动下载):
sudo yum install checkinstall或从 rpm.pbone.net 下载适配版本后本地安装 - Fedora:
sudo dnf install checkinstall
装好后运行 checkinstall -h 可查看完整选项说明。
标准编译 + checkinstall 打包流程
假设你已解压源码并进入目录,按如下步骤操作:
- 执行配置:
./configure --prefix=/usr/local(按需调整路径) - 编译:
make -j$(nproc)(加速编译) - 关键一步:不用
sudo make install,改用:sudo checkinstall
此时 checkinstall 会自动调用 make install,同时监控所有写入文件系统的操作,并据此构建二进制包。
控制包类型与基础元数据
默认行为因系统而异(Debian 系统默认生成 deb,RHEL 默认生成 rpm),但可显式指定:
- 强制生成 deb:
sudo checkinstall -D - 强制生成 rpm:
sudo checkinstall -R - 跳过交互、使用默认值(适合脚本化):
sudo checkinstall -y -D
交互阶段会提示你填写包信息,重点注意:
-
Version 字段必须合规:Debian 要求形如
1.2.3,不能含_beta或-rc,否则报 warning;可提前用--pkgversion=1.2.3指定 - Name 和 Summary 建议如实填写,便于后期识别
-
Requires 可手动补充运行依赖(如
libc6, libssl1.1),提升包健壮性
生成后验证与后续操作
成功执行后,终端会显示生成包的绝对路径(如 /root/checkinstall_nginx_1.24.0-1_amd64.deb):
- 查内容:
dpkg -c package.deb(deb)或rpm -qlp package.rpm(rpm) - 装包:
sudo dpkg -i package.deb或sudo rpm -ivh package.rpm - 卸载(比
make uninstall更可靠):sudo dpkg -r package-name或sudo rpm -e package-name - 查看是否注册进系统:
dpkg -l | grep package-name或rpm -qa | grep package-name
若需二次修改(如加 postinst 脚本),可解压 deb 的 DEBIAN/ 目录或 rpm 的 spec 内容,再用 dpkg-deb -b 或 rpmbuild 重打包。











