前言:

RPM包安装快速、方便。使用源码包可以定制想要的功能,然后将其制作成.rpm格式的包。在生产环境中,我们的开发人员通常下载好源码包,选择好自己所需功能,丢给运维人员制作rpm包后。将其丢入本地yum源库,以后直接调用安装。。。


下面我们以apache WEB源码包httpd-2.2.25.tar.gz为例,来制作RPM包。


[root@localhost ~]# ls

anaconda-ks.cfg  httpd-2.2.25.tar.gz

[root@localhost ~]# yum -y install rpm-build gcc gcc-c++

[root@localhost ~]# useradd tom

[root@localhost ~]# cp httpd-2.2.25.tar.gz /home/tom/

[root@localhost ~]# su - tom

[root@localhost Packages]# rpm -qpi httpd-2.2.15-29.el6_4.x86_64.rpm 

warning: httpd-2.2.15-29.el6_4.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Name        : httpd                        Relocations: (not relocatable)

Version     : 2.2.25                            Vendor: Red Hat, Inc.

Release     : 29.el6_4                      Build Date: 2013年08月02日 星期五 20时03分06秒

Install Date: (not installed)               Build Host: x86-002.build.bos.redhat.com

Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-29.el6_4.src.rpm

Size        : 3075393                          License: ASL 2.0

Signature   : RSA/8, 2013年08月12日 星期一 21时49分45秒, Key ID 199e2f91fd431d51

Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>

URL         : http://httpd.apache.org/

Summary     : Apache HTTP Server

Description :

The Apache HTTP Server is a powerful, efficient, and extensible

web server.

//上面我们可以看到系统自带的httpd软件包的详细信息。。 

[root@localhost ~]$ vim httpd.spec  此时我们以普通用户编辑一个文件,一定要以.spec结尾

Name:httpd   //名称

Version:2.2.15  //版本号

Release:        1%{?dist}

Summary:HTTP Server by SXS   //描述


Group:System Environment/Daemons  //复制上面的

License:ASL 2.0    //同上

URL:http://www.sxs.com   //网址

Source0:httpd-2.2.25.tar.gz   //源码包名称

BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)


BuildRequires:gcc,gcc-c++,openssl-devel   编译成RPM包需要的程序

Requires:vsftp        //安装这个RPM包所需依赖关系,一定要写,我这是随便写的

 

%description

http server by sxs   //描述


%prep

%setup -q



%build 

%configure     编译安装的流程

./configure --prefix=/usr/local/httpd --enable-cgi --enable-rewrite --enable-charset-lite --enable-so

make %{?_smp_mflags}



%install

rm -rf %{buildroot}

make install DESTDIR=%{buildroot}



%clean

rm -rf %{buildroot}



%files

%defattr(-,root,root,-)    这个包括了安装完成源码包,会在目标目录生成的文件,之前要先安                     装一遍!

/usr/local/httpd/bin/*

/usr/local/httpd/build/*

/usr/local/httpd/cgi-bin/*

%config /usr/local/httpd/conf/*  %config   %dir  %doc 按如下格式写

/usr/local/httpd/error/*

/usr/local/httpd/htdocs/*

/usr/local/httpd/icons/*

/usr/local/httpd/include/*

/usr/local/httpd/lib/*

%dir /usr/local/httpd/logs 

%doc /usr/local/httpd/man/*

%doc /usr/local/httpd/manual/*

usr/local/httpd/modules/*


%post         源码包安装完成所做的软连接及优化

ln -s /usr/local/httpd/bin/* /usr/local/bin/   

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

sed -i '1a # chkconfig: 35 81 81' /etc/init.d/httpd

sed -i '2a # description:Http server by sxs' /etc/init.d/httpd

chkconfig --add httpd


%preun     删除软件所需步骤

/etc/init.d/httpd stop

chkconfig --del httpd

rm -rf /usr/local/httpd

rm -rf /etc/init.d/httpd



%changelog   

* Tue Feb 21 2017 Shi xiang shi <120558876@qq.com>2.2.15-1- First to 2.2.15


[root@localhost ~]$ rpmbuild httpd.spec 会提示失败,ls一下,会多出一个rpmbuild目录

[root@localhost ~]$ cd rpmbuild

[root@localhost ~]$ cp ../httpd-2.2.25.tar.gz SOURCES/

[root@localhost ~]$ cp ../httpd.spec SPEC/

[root@localhost ~]$ cd SPEC

[root@localhost ~]$ rpmbuild httpd.spec

[root@localhost ~]$接下来会进行编译安装及制作过程,制作完毕后,会在RPMS目录生成RPM包

[root@localhost x86_64]# pwd

/home/tom/rpmbuild/RPMS/x86_64

[root@localhost x86_64]# ls

httpd-2.2.25-1.el6.x86_64.rpm