RPM包制作与实战
1、安装RPM软件
yum install rpm-build
2、建立目录结构
mkdir /usr/src/RedHat/{SOURCES,SPECS,BUILD,RPMS,SRPMS} -p
相关目录介绍:
/usr/src/redhat/SOURCES #存放源代码、补丁等文件
/usr/src/redhat/SPECS #存放用于管理rpm制作进程的spec文件
/usr/src/redhat/BUILD #解压后的文件存放目录
/usr/src/redhat/RPMS #存放由rpmbuild制作好的二进制包
/usr/src/redhat/SRPMS #存放由rpmbuild制作好的源码包
3、把源码包放在SOURCES目录下
cd /usr/src/redhat/SOURCES wget http://nginx.org/download/nginx-1.2.0.tar.gz
4、生成nginx.spec文件
cd /usr/src/redhat/SPECS
cat nginx.spec
# # spec file for nginx # Build 2012-07-17 # By opsren # Summary: High performance web server Name: Nginx Version: 1.2 Release: 0.el5.ngx License: 2-clause BSD-like license Group: Applications/Server Source: http://nginx.org/download/nginx-1.2.0.tar.gz URL: http://nginx.org Distribution: Centos/Redhat Packager: qiuzhijun <250621008@qq.com> %description Nginx ("engine x") is a high performance HTTP and reverse proxy server, as well as a mail(IMAP/POP3/SMTP) proxy server. %prep tar zxf $RPM_SOURCE_DIR/nginx-1.2.0.tar.gz %build cd nginx-1.2.0 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre make %install cd nginx-1.2.0 make install %preun if [ -z "`ps aux | grep nginx | grep -v grep`" ];then pkill nginx >/dev/null exit 0 fi %files /usr/local/webserver/nginx
5、
RPM包制作
首先系统要安装好必备的制作工具:gcc、rpmbuild等
yum -y install gcc rpm-build pcre-devel cd /usr/src/redhat/SPECS/ rpmbuild -bb nginx.spec
通过上面这条命令,会在/usr/src/redhat/RPMS/x86_64/下面生成nginx-1.2.0-1.el5.ngx.x86_64.rpm这个文件
-bb 这个选项就是制作二进制包(build binary package only from <specfile>)
对spec文件内容进行简单说明:
spec文件是制作rpm包的核心!
- 以#开头的是注释信息;
- Summary:对相关软件进行简单描述说明
- Name:定义rpm包的名称
- Version:定义软件的版本号
- Release:发行版本
- License:定义许可证
- Group:说明软件属于哪种应用类型
- Source:软件源码下载地址
- URL:软件相关官方站点
- Distribution: 发行版系列
- Packager: 制作人的简单信息
- %description:软件详细描述信息
- %prep:软件编译之前的处理
- %build:编译软件
- %install:安装软件
- %preun:定义卸载之前的动作
- %files:指定要打包的软件包,这里是/usr/local/nginx
下面是一个经典的事例:
vi .rpmmacros
%_topdir /home/wb-liqiu/rpm %packager wb-liqiu %vendor TaoBao Inc. %_svn_path Unknown_path %_svn_revision Unknown_revision %_version 0.0.1 %_release 6 %_crondir /etc/cron.d %_crontab .//etc/cron.d/%{name} %_unpackaged_files_terminate_build 0 %build_root %{_topdir}/BUILDROOT
然后
mkdir rpm
mkdir rpm/{SOURCES,SPECS,BUILD,RPMS,SRPMS} -p
spec事例:
Name: gearmand Version: 0.14 Release: 1 Summary: -- Group: Productivity/Networking License: BSD Url: http://launchpadlibrarian.net/51244438/gearmand-0.14.tar.gz Vendor: 公司 Packager: 姓名 <邮箱> Source: gearmand-%{version}.tar.gz BuildRoot: %{_tmppath}/{%name}-%{version} BuildArch: x86_64 Requires: lz-libdrizzle>=1.0 Requires: boost libevent BuildRequires: gcc libevent-devel %description --- %prep %setup -q %build ./configure PREFIX=%{buildroot} --disable-libmemcached --disable-libsqlite3 make %install make install DESTDIR=$RPM_BUILD_ROOT cur_dir=`pwd` cd $RPM_BUILD_ROOT && (find . -type f | sed -e 's|^./|/|g' > $cur_dir/%{name}.manifest) cd $RPM_BUILD_ROOT && (find . -type l | sed -e 's|^./|/|g' >> $cur_dir/%{name}.manifest) %clean rm -rf %{buildroot} %files -f %{name}.manifest %defattr(-,admin,users,-) %changelog