rpm 包打不出来?
rpmbuild 打包报错的常见原因:spec 语法错、BuildRequires 缺包、未配 _topdir 宏目录,给排错顺序与命令。
简短答案
打包失败按层查:先是不是 ~/.rpmmacros 没写 _topdir(报找不到 rpmbuild 路径),其次是 spec 里 BuildRequires 没装齐,最后才是 spec 语法本身。从上往下查最快。
现象对照表
| 报错 | 原因 |
|---|---|
| 找不到 rpmbuild 工作目录 | 没配 _topdir 宏 |
BuildRequires(...) not found |
编译依赖没装 |
%files 段 bad entry |
spec 里写了不存在的文件 |
| 打出的包装完跑不起来 | %install 没装全或 Requires 没写全 |
排查步骤
# 1. 配宏并建目录
cat >> ~/.rpmmacros <<'EOF'
%_topdir %(echo $HOME)/rpmbuild
EOF
mkdir -p ~/rpmbuild/{BUILD,SPECS,SOURCES,RPMS,SRPM}
# 2. 补编译依赖
yum builddeps 包名.spec # 或逐条 yum install xxx-devel
# 3. 干跑查 spec 语法,再正式打
rpmbuild -bs 包名.spec
rpmbuild -ba 包名.spec
# 4. 看产物
ls -l ~/rpmbuild/RPMS/
处理办法
_topdir没配就只报路径错,配完即可;- BuildRequires 缺包用
yum builddeps一次补齐; - %files 报错多为文件没落到 BUILD 目录,先
ls ~/rpmbuild/BUILD/包名*/核对; - 打完的包先在本机
rpm -ivh自测一遍再分发;目标基线对照 服务器 V11 条目,分发介质可用 Rufus 启动盘条目 的方法做 U 盘。
操作小结
- 先配宏目录,再谈 spec;
- builddeps 补依赖,干跑先排语法;
- 产出的包本机自测后再发;
- 分发前记录包版本与目标基线。