新手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/

你可能感兴趣的:(新手RPM打包教程)