Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1365602
  • 博文数量: 632
  • 博客积分: 2778
  • 博客等级: 大尉
  • 技术积分: 3387
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-31 09:09
个人简介

123

文章分类

全部博文(632)

文章存档

2014年(36)

2013年(33)

2012年(563)

分类:

2012-12-06 08:17:48

原文地址:制作rpm包 作者:ooooldman

tar包转rpm

rpmbuild 会这topdir 来进行build
先来看看topdir 的目录
rpmbuild --showrc  |grep topdir

-14: _builddir %{_topdir}/BUILD
-14: _rpmdir %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
-14: _topdir %{_usrsrc}/redhat

可以看到_topdir 定义的目录%{_usrsrc}/redhat ,但是作为普通用户是没办法用/usr/src/redhat 来编译的,所以需要修改_topdir定义
rpmbuild 所载入的配置文件为macrofiles
rpmbuild --showrc |grep macrofiles
macrofiles            : /usr/lib/rpm/macros:/usr/lib/rpm/x86_64-linux/macros:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/x86_64-linux/macros:~/.rpmmacros
配置文件是从前往后读取的,后面的文件中定义覆盖前面的,
vim ~/.rpmmacros
###添加
%_topdir /home/tony/rpmmacros

再检查下
rpmbuild --showrc |grep topdir
-14: _topdir /home/tony/rpmmacros

mkdir  -p /home/tony/rpmmacros/{BUILD,BUILDROOT,RPMS,SRPMS,SOURCES,SPECS}

将tar包放在SOURCES下面,将spec文件放在SPECS下面,声称的rpm包放在RPMS,生成过程中解压的文件放在BUILD目录,安装后的跟目录在BUILDROOT,




将启动文件nginx.init 和nginx-1.0.15.tar.gz 放在SOURCES下面



在SPECS下面
vim nginx.spec
%define name  nginx
%define version 1.0.15
%define nginxdir  /usr/local/nginx/
%define nginxinit  /etc/rc.d/init.d/nginx
%define nginxuser www
Name : %{name}
Version : %{version}
Release : 1
License : GPL
Group : Application/Productivity
source0 : nginx-1.0.15.tar.gz
source1 : nginx.init
Vendor : 
URL : 
Summary : nginx is http web
BuildRoot : %{_topdir}/BUILDROOT
BuildRequires : gcc,pcre-devel,openssl-devel
%Description
nginx is http web

%prep
%setup -q

%build
./configure \
--prefix=%{nginxdir}  \
--user=www \
--group=www \
--with-http_mp4_module \
--with-http_gzip_static_module  \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module 
make
%install
%{__rm} -fr %{buildroot}
make install  DESTDIR="%{buildroot}"
%{__rm} -fr  %{buildroot}/%{nginxinit}
install -p -D -m 0755 %{SOURCE1} %{buildroot}/%{nginxinit}
%pre
if  [ $1 == 1 ] 
then
   useradd  %{nginxuser}  2>/dev/null  || :
fi
%post
if  [  $1  == 1 ]
then
/sbin/chkconfig --add %{name}
fi
%preun
if [ $1 == 0 ]
then
/sbin/service %{name} stop  > /dev/null  2>&1
/sbin/chkconfig  --del %{name} 
fi
%postun




%clean
rm -fr %{buildroot}

%files
%defattr(-,root,root,0755)
%{nginxdir}
%{nginxinit}

然后rpmbuild -bb nginx.spec
就可以在RPMS中得到rpm文件了



%define    name         nginx
%define    nginx_user   www
%define    version      1.2.6
%define    release      1
%define    nginx_init   /etc/rc.d/init.d/nginxd

Name:               %{name}
Version:            %{version}
Release:            %{release}
Summary:            nginx is webserver
Group:              Applications/Communications
License:            BSD
URL:               
BuildRoot:          %{_topdir}/BUILDROOT
BuildRequires:      pcre-devel,openssl-devel
Requires:           pcre,openssl
Source0:            %{name}-%{version}.tar.gz
Source1:            %{name}.init

Requires(pre):      shadow-utils
Requires(post):     chkconfig

#Requires(preun):      shadow-utils
#Requires(postun):     chkconfig

%description
nginx is webserver


%prep
%setup -q

%build
export DESTDIR=%{buildroot}
./configure  \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_stub_status_module \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--user=%{nginx_user} \
--group=%{nginx_user}
make
%install
%{__rm} -fr  %{buildroot}
make install DESTDIR=%{buildroot}
install -p -D -m 0755 %{SOURCE1} %{buildroot}/%{nginx_init}

%clean
%{__rm} -fr %{buildroot}/*


%pre
if [  $1 == 1  ]
then
/usr/sbin/useradd -d /usr/local/nginx  -s /sbin/nologin  %{nginx_user} 2>/dev/null  || :
fi

%post
if [  $1 == 1  ]
then
/sbin/chkconfig  --add nginxd
fi

%preun
if [ $1 == 0  ]
 then
 /sbin/service  nginxd stop 2>&1 > /dev/null ||:
 /sbin/chkconfig --del nginxd 2>&1 > /dev/null ||:
fi

%postun
if [  $1 == 0 ]
then
%{__rm} -fr /usr/local/nginx/
fi


%files
%defattr(-,root,root,-)
%{nginx_init}
%dir /var/log/nginx
%dir /etc/nginx
%dir /usr/local/nginx/logs
%dir /usr/local/nginx/html
/etc/nginx/mime.types.default
%config(noreplace)  /etc/nginx/nginx.conf
%config(noreplace)  /etc/nginx/uwsgi_params
%config(noreplace)  /etc/nginx/fastcgi_params
%config(noreplace)  /etc/nginx/fastcgi.conf
/etc/nginx/scgi_params.default
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params.default
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/koi-utf
/etc/nginx/mime.types
/etc/nginx/uwsgi_params.default
/etc/nginx/koi-win
/etc/nginx/win-utf
/usr/local/nginx/html/index.html
/usr/local/nginx/html/50x.html
/etc/nginx/fastcgi.conf
/usr/local/sbin/nginx



阅读(455) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~