飞行日志
常用链接
韭菜搞钱
三省吾身
知行合一
👨💻实践指南-009-使用git打包rpm
type
status
date
slug
summary
tags
category
icon
password
1. rpm 通用编译环境搭建2. 使用 Git 管理 rpm 工程3. 更科学的目录组织方式4. 使用 Git 打包源码5. 使用 Git 生成补丁6. changelog 的生成格式7. 查看 rpm 宏定义8. 参考文档
1. rpm 通用编译环境搭建
此外,sublime、vscode、chrome等可以自行选择
执行 rpmdev-setuptree 会自动生成目录,适用 yum-builddep xxx.spec 可以自动安装编译依赖。
2. 使用 Git 管理 rpm 工程
虽然 rpm 没有基于 Git 管理的源码仓库,但是它所有的 patch 都是用 Git 生成的……
以 nautilus 为例,一个 Git 管理的 rpm 工程有如下的目录结构:
如果此时执行 rpmbuild 命令,会报出找不到 nautilus-xxx.tar.gz 的错误,需要手下下载源码压缩包,提供以下三种方式:
方法 A. 使用 spectool 来下载(推荐)
spectool 是存放在 rpmdevtools 包提供。
方法 B. 手动下载(不推荐)
浏览 spec 文件,找到 Source0[, Source1[, Source2…]]
既可以使用 wget、curl等命令或者其他工具手动下载,也可以使用 yum 插件来完成。
方法 C. 使用 disable_source_fetch 的方法(自行确认安全来源)
修复 spec 文件,加入:
之后命令行尝试:
3. 更科学的目录组织方式
此方法需要时刻注意当前目录的位置于工作目录的区别!传统打包都是在当前用户主目录下生成 rpmbuild 文件夹,在处理多个包的时候,会造成构建目录的污染。
修改 $HOME 目录下,文件 .rpmmacros 内容:将 %_topdir %(echo $HOME)/rpmbuild 修改为 %_topdir %(echo
pwd
);亦可在编译时指定,不对全局变量进行修改。合理的步骤:
A. 修改源码,提交生成 format-patch,git format-patch HEAD^ –stdout > 重定向到 SOURCES 文件夹;
B. 修改 spec 文件,把patch 文件放入 SOURCES 文件夹,但不添加不提交,因为可能经历反复修改;
C. 修改完成后,再把新的 patch 和 spec 文件提交。
4. 使用 Git 打包源码
使用 Git 打包源码:git bundle create repo.bundle HEAD master
使用 Git 解压打包:git clone repo.bundle repo