首先为了安全单独创建一个用户来制作rpm
useradd rpmmaker
然后切换帐号
su - rpmmaker
添加一个文件配置文件,并设置编译的根目录为 ~/rpmbuild
vi ~/.rpmmacros
添加内容
%_topdir /home/rpmmaker/rpmbuild/
:wq
保存退出
在编译根目录下创建我们需要的目录
cd ~/rpmbuild
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
把tar.gz 包放在 SOURCES 目录下, 我们的包是 http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
在 SPECS 目录下建立 spec 文件
cd SPECS
vi tengine.spec
添加内容
### 0.define section #自定义宏段,这个不是必须的
### %define nginx_user nginx #这是我们自定义了一个宏,名字为nginx_user值为nginx,%{nginx_user}引用
### 1.The introduction section #介绍区域段
#名字为tar包的名字
Name: tengine
#版本号,一定要与tar包的一致哦
Version: 2.1.0
#释出号,也就是第几次制作rpm
Release: 1%{?dist}
#软件包简介,最好不要超过50字符
Summary: tengine from TaoBao
#许可,GPL还是BSD等
License: GPLv2
Packager: Gaojianwei <gaojianwei@cmstop.com>
Vendor: cmstop.com
#定义用到的source,也就是你收集的,可以用宏来表示,也可以直接写名字,上面定义的内容都可以像上面那样引用
Source0: %{name}-%{version}.tar.gz
BuildRoot: %_topdir/BUILDROOT
#这个是软件make install 的测试安装目录,也就是测试中的根,我们不用默认的,我们自定义,
#我们可以来观察生成了哪此文件,方便写file区域
#制作过程中用到的软件包
BuildRequires: gcc,make
#软件运行需要的软件包,也可以指定最低版本如 bash >= 1.1.1
Requires: pcre,pcre-devel,openssl,chkconfig
#软件包描述,
%description
It is a Nginx from Taobao. #描述内容
### 2.The Prep section 准备阶段,主要目的解压source并cd进去
#这个宏开始
%prep
%setup -q
### 3.The Build Section 编译制作阶段,主要目的就是编译
%build
./configure --prefix=/usr/local/server --user=nginx --group=nginx --with-pcre
#make后面的意思是:如果就多处理器的话make时并行编译
make %{?_smp_mflags}
### 4.Install section 安装阶段
%install
#先删除原来的安装的,如果你不是第一次安装的话
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
#DESTDIR指定安装的目录,而不是真实的安装目录,%{buildroot}你应该知道是指的什么了
### 4.1 scripts section #没必要可以不写
#rpm安装前制行的脚本
%pre
if [ $1 == 1 ];then #$1==1 代表的是第一次安装,2代表是升级,0代表是卸载
/usr/sbin/useradd -r nginx 2> /dev/null ##其实这个脚本写的不完整
fi
#安装后执行的脚本
%post
#卸载前执行的脚本
%preun
if [ $1 == 0 ];then
/usr/sbin/userdel -r nginx 2> /dev/null
fi
#卸载后执行的脚本
%postun
### 5.clean section 清理段,删除buildroot
%clean
rm -rf %{buildroot}
### 6.file section 要包含的文件
%files
%defattr (-,root,root) #设定默认权限,如果下面没有指定权限,则继承默认
/user/local/server/tengine
接下来执行,
rpmbuild -bp
rpmbuild -bi
rpmbuild -ba
上面如果有一步有错误,则检查错误,直到 rpmbuild -ba 执行成功,我们要的rpm 包就生成在 RPMS 下了
转载请注明:大后端 » Centos 6 制作 rpm 包