新手RPM打包教程

1.安装 rpm-build 包

yum install rpm-build
可以先查看下rpmbuild版本,如果有就不需要再安装了
rpmbuild --version

2.安装 rpmdevtools

yum install rpmdevtools

3.创建工作空间

rpmdev-setuptree是rpmdevtools中带的初始化环境脚本,执行后会在用户主目录下创建rpmbuild目录和.rpmmacros文件,同时生成所需的子目录和默认的控制参数,执行:
rpmdev-setuptree
自动生成的目录结构:

-- rpmbuild
    |-- BUILD
    |-- RPMS
    |-- SOURCES
    |-- SPECS
    |-- SRPMS

4.创建 SPEC 文件

SPEC文件控制整个rpm的打包过程,包含了打包的全部信息和控制参数,可以使用 rpmdev-newspec 命令来创建一个初始的SPEC文件,SPEC文件需放入rpmbuild/SPECS目录
rpmdev-newspec zookeeper.spec

SPEC 脚本主要定义了打包过程中的几个阶段的配置:
(1)信息定义阶段 :定义软件包的名字、版本等信息和打包过程中用到的变量等
(2)制作准备阶段 :解压源码包、补丁包并打补丁
(3)编译阶段 :设置编译参数并编译源码
(4)安装阶段 :定义安装过程所执行的命令,包括安装前、安装后、卸载前、卸载后执行的操作
(5)清理阶段 :清理打包过程中用到的目录文件等
(6)文件设置阶段 :要打包的文件和目录,并设置文件权限等

目前我的SPEC没有指定软件源码包路径(Source0参数),我是直接将文件夹打包,所直接将文件夹放到/root/rpmbuild/BUILDROOT/apache-zookeeper-3.6.1-1.x86_64/opt/zookeeper(opt/zookeeper必须是根据大家自己配置的打包目录一致)

# 1.信息定义阶段
### 软件名字,要与spec的文件名一致 
Name:           apache-zookeeper
### 软件主版本号
Version:        3.6.1
### 发行编号,每打包一次值递增,主版本号发布新版后需重置该值
Release:        1
### 一行简短的软件简介,结尾不要加标点
Summary:        Zookeeper is a highly reliable distributed coordination service
Group:          
### 软件许可
License:        Apache 2.0
### 软件项目主页
URL:           https://zookeeper.apache.org/
### 放置在SOUIRCES目录的软件源码包名,可以指定多个:source1、source2等
#Source0:        %{name}.%{version}.tar.gz  
### 在 install 阶段的测试安装目录,方便写files
#buildroot:      %_topdir/BUILDROOT
#BuildRequires:  go
### 安装软件包时所需的依赖包列表,可以指定版本如 bash >= 1.1.1
#Requires:       readline-devel,pcre-devel,openssl-devel
### 程序的详细多行描述,每行必须小于等于 80 个字符,空行表示开始新段
%description
Zookeeper 3.6.1

# 2.准备阶段
%prep
## 静默模式解压并进入解压后的目录,也常用:%autosetup -n %{name}
 
# 3. 编译阶段
%build

# 4.安装阶段
%install
### 删除之前的残留文件

## rpm安装前制行的脚本
%pre
### $1==1 代表的是第一次安装,2代表是升级,0代表是卸载
#if [ $1 == 1 ];then     
#     /usr/sbin/useradd -r %{nginx_user} 2> /dev/null 
#fi

## rpm安装后制行的脚本
%post

###卸载前执行的脚本
%preun
###卸载后执行的脚本
%postun
rm -rf opt/zookeeper

# 5.清理阶段
%clean
### 删除buildroot目录
rm -rf %{buildroot}

#  6.文件设置阶段
%files
### 设定默认权限,如果下面没有指定权限,则继承默认
%defattr (-,root,root)
###要打包的文件和目录,在执行完rpmbuild -bi后,参考%{rootbuild}下生成的文件和目录
/opt/zookeeper

编写完 SEPC 文件后,可以通过 rpmlint 检查是否有配置错误
rpmlint motan-go.spec

5.执行打 rpm 包命令

cd /root/rpmbuild/SPECS
rpmbuild -ba zookeeper.spec

6.安装测试RPM包

rpm -Uvh apache-zookeeper-3.6.1-1.x86_64.rpm

******特别备注下,如果需要编译的程序在编译前可以指定到同一目录打包然后整个目录打包

例:export DESTDIR=/opt/zookeeper
./make.sh
./make.sh install

参考资料

ZooKeeper从源码到RPM包制作过程详解
http://www.erik-ly.com/2019/12/29/ZooKeeper-rpm/
CentOS 如何打 RPM 包
https://idevz.org/2017/07/centos-%E5%A6%82%E4%BD%95%E6%89%93-rpm-%E5%8C%85/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 一文看懂Linux内核[https://www.cnblogs.com/lh03061238/p/12215367...
    DreamLee0201阅读 183评论 0 0
  • RPM包制作方法 一. 打包的步骤 1.材料的准备: 打包工具(yum install rpm-build) 一个...
    followhy阅读 307评论 0 3
  • 前言 题图为RPM包制作原理图,有时候为了方便源码包的安装,和我们自己订制软件包的需求,我们会把一些源码包按照我们...
    王奥OX阅读 2,588评论 0 1
  • 使用源码包制作rpm包 本次试验环境 系统:CentOS6.8 源码包:nginx-1.14.0 1、安装rpm包...
    雄柱阅读 1,357评论 0 0
  • RPM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux ...
    IARNO阅读 2,417评论 0 2