Centos 7 bind服务rpm包制作

1.安装 rpm-build 包

yum install rpm-build
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 named.spec

SPEC 脚本主要定义了打包过程中的几个阶段的配置:

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

### 软件名字,要与spec的文件名一致
Name:           named
### 软件主版本号
Version:        1.1.0
### 发行编号,每打包一次值递增,主版本号发布新版后需重置该值
Release:        0
### 一行简短的软件简介,结尾不要加标点
Summary:        om dns service
### 软件许可
License:        Apache 2.0
### 类别
Group:  Applications/Internet
### 软件项目主页
URL:            https://www.qianxin.com

### 放置在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

Source0: 	named-1.1.0.tar.gz
Prefix:		/usr/local
BuildArch: 	noarch
BuildRoot: 	%{_tmppath}/%{name}-root
Provides: 	named
Requires(post): /sbin/chkconfig, /sbin/service
Requires(preun): /sbin/chkconfig, /sbin/service

    
### 程序的详细多行描述,每行必须小于等于 80 个字符,空行表示开始新段
%description
named 1.1.0

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

# 3. 编译阶段
%build

# 4.安装阶段
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/named
mkdir -p $RPM_BUILD_ROOT/etc/init.d
mkdir -p $RPM_BUILD_ROOT/var/log/named
tar xfz $RPM_SOURCE_DIR/named-%{version}.tar.gz
cp -r $RPM_BUILD_DIR/named $RPM_BUILD_ROOT/usr/local/

## rpm安装前制行的脚本
%pre
if [ $1 == 1 ];then     
     /usr/sbin/useradd -u 500 named 2> /dev/null
     [ ! -d '/var/log/named' ] && mkdir -p /var/log/named 
fi

## rpm安装后制行的脚本
%post
chmod +x /usr/local/named/inst/named
bash /usr/local/named/inst/init.sh

###卸载前执行的脚本
%preun

###卸载后执行的脚本
%postun
rm -rf /usr/local/named
/sbin/chkconfig --del named

# 5.清理阶段
%clean
rm -rf $RPM_BUILD_ROOT

#  6.文件设置阶段
%files
### 设定默认权限,如果下面没有指定权限,则继承默认
%defattr (-,named,named)
/usr/local/named
/var/log/named

%doc
%changelog

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

rpmlint named.spec

5.执行打 rpm 包命令

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

6.安装测试RPM包

rpm -Uvh named-1.1.0-1.x86_64.rpm
posted @ 2022-04-24 16:35  dqforgive-sudo  阅读(585)  评论(0)    收藏  举报