rpm 包在麒麟上怎么制作与分发
讲在银河麒麟上用 rpmbuild 制作本地 rpm 包的流程:spec 文件要点、构建目录、出包验证,以及离线环境把包分发到目标机器的做法。
结论先行
把自研或内网专属组件打成 rpm,走 rpmbuild + spec 文件路线:spec 描述依赖、安装脚本与文件清单,rpmbuild -ba 出包,装进 V11 服务器条目 等目标机器后纳入正常包管理。信创离线环境出包时架构必须与目标机一致。
构建准备
# 装构建工具
dnf install -y rpm-build
# 建好构建目录
mkdir -p ~/rpmbuild/{SPECS,SOURCES,BUILD,BUILDROOT,RPMS}
spec 文件要写清的四块
| 段落 | 内容 |
|---|---|
| 头部宏 | Name / Version / Release / Summary / License |
| 依赖 | Requires(运行依赖)与 BuildRequires(编译依赖) |
| 安装段 | %build 与 %install,产物落到 %{_buildapi} |
| 文件段 | %files 列全安装文件;%post / %preun 写服务启停等脚本 |
依赖声明宁全勿缺——写少依赖的包,到别的机器上装就是 麒麟系列总览 的来源。
出包与验证
rpmbuild -ba SPECS/mypkg.spec
# 产物在 ~/rpmbuild/RPMS/<架构>/
rpm -qpi 包名.rpm # 看包元信息
rpm -qlp 包名.rpm # 看文件清单
# 先干跑再装
rpm -ivh --test 包名.rpm
rpm -ivh 包名.rpm
分发到内网
版本规范
- Version 跟组件自身版本,Release 从 1 起,每重新出包 +1。
- 同一组件不同架构分别出包,包名里的架构段要能直接区分。