CentOS下关于源码打包成rpm安装包
@H_301_4@
平台:centos6.5@H_301_4@
首先是搭建环境:@H_301_4@
[cpp]view plaincopyprint?@H_301_4@
[root@localhostbinbin]#yuminstall-yrpm-build</span>@H_301_4@
[cpp]view plaincopyprint?@H_301_4@
[root@localhostbinbin]#yuminstallredhat-rpm-config@H_301_4@
之后会在/root目录下有一个rpmbuild目录@H_301_4@
[cpp]view plaincopyprint?@H_301_4@
进入该目录,里面有五个文件夹分别是BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
刚开始时都是空的
[html]view plaincopyprint?@H_301_4@
如果没有这几个目录可以手动添加创建
这六个目录的作用分别是:
BUILD :rpmbuild编译软件的目录
BUILDROOT :
RPMS :rpmbuild创建binary RPM 所存放的目录
SOURCES :存放源代码的目录
SPECS :存放spec文件的目录
SRPMS :rpmbuild创建souce RPM 所存放的目录
首先是将放置有源码的文件夹进行打包。此处我的文件夹起名为login-1.0
[cpp]view plaincopyprint?@H_301_4@
[root@localhostbinbin]#tarzcvflogin-1.0.tar.gzlogin-1.0@H_301_4@
[root@localhostbinbin]#ls@H_301_4@
login-1.0.tar.gzlogin-1.0@H_301_4@
将login-1.0.tar.gz拷贝至rpmbuild/SOUCES目录下
[html]view plaincopyprint?@H_301_4@
[root@localhostbinbin]#cplogin-1.0.tar.gz/root/rpmbuild/SOURCES@H_301_4@
[root@localhostSOURCES]#ls@H_301_4@
login-1.0.tar.gz@H_301_4@
此时进入SPEC目录,编写SPEC文件(此步是打包rpm包的关键一步)
[html]view plaincopyprint?@H_301_4@
[root@localhostSOURCES]#cd../SPECS@H_301_4@
[root@localhostSPECS]#touchlogin.spec@H_301_4@
[root@localhostSPECS]#ls@H_301_4@
login.spec@H_301_4@
[root@localhostSPECS]#vimlogin.spec@H_301_4@
[html]view plaincopyprint?@H_301_4@
#名字@H_301_4@
Name:login@H_301_4@
#版本号@H_301_4@
Version:1.0@H_301_4@
#编译的次序@H_301_4@
Release:1@H_301_4@
#一句话介绍包(不超过50个字符)@H_301_4@
Summary:istest@H_301_4@
Group:Applications/Communications@H_301_4@
License:GPL@H_301_4@
URL:www.ciis.com@H_301_4@
Source:login-1.0.tar.gz@H_301_4@
@H_301_4@BuildRoot:%{_tmppath}/%{name}-%{version}-root@H_301_4@
%description@H_301_4@
atest@H_301_4@
#构建包前的处理@H_301_4@
%prep@H_301_4@
@H_301_4@
@H_301_4@#--解压:这里主要是构建的时候解压缩源码到系统目录,这里是$RPM_BUILD_DIR@H_301_4@
#setup-c解压的时候会生成一个和压缩包同名的新目录;setup-ndirname指定一个新的目录以解压缩setup-q直接解压,不产生新的目录@H_301_4@
%setup-q@H_301_4@
@H_301_4@
@H_301_4@%build@H_301_4@
make@H_301_4@
@H_301_4@
@H_301_4@#--安装:构建的时候把当前文件安装到系统目录$RPM_BUILD_ROOT/下,二进制安装的时候是安装文件到/根目录下@H_301_4@
%install@H_301_4@
@H_301_4@
@H_301_4@#makeinstall#使用makefile的install,方便@H_301_4@
rm-rf$RPM_BUILD_ROOT/*@H_301_4@
mkdir-p$RPM_BUILD_ROOT/usr/bin/@H_301_4@
cp-r$RPM_BUILD_DIR/%{name}-%{version}$RPM_BUILD_ROOT/usr/bin/@H_301_4@
@H_301_4@
@H_301_4@#安装完成后续:二进制包安装后的处理脚本@H_301_4@
%post@H_301_4@
chmod+x/usr/bin/%{name}-%{version}/confAgent@H_301_4@
chmod+x/usr/bin/%{name}-%{version}/check_confAgent.sh@H_301_4@
@H_301_4@
@H_301_4@#卸载完成后续:二进制包卸载完成后的处理脚本@H_301_4@
%postun@H_301_4@
rm-fr/usr/bin/%{name}-%{version}@H_301_4@
@H_301_4@
@H_301_4@#清理:构建包完成后处理@H_301_4@
%clean@H_301_4@
rm-rf$RPM_BUILD_ROOT@H_301_4@
@H_301_4@
@H_301_4@#构建包时,文件列表的文件或目录必须和虚拟目录RPM_BUILD_ROOT中的文件或目录一致,否则构建时会@H_301_4@
%files@H_301_4@
%defattr(-,root,root)@H_301_4@
/usr/bin/%{name}-%{version}@H_301_4@
@H_301_4@
@H_301_4@%changelog@H_301_4@
保存退出,执行打包命令
[html]view plaincopyprint?@H_301_4@
[root@localhostSPECS]#rpmbuild-balogin.spec</span>@H_301_4@
之后会在RPMS/i686目录下有相应的rpm包,这里是login-1.0-1.i686.rpm
[html]view plaincopyprint?@H_301_4@
[root@localhostSPECS]#cd../RPMS/i686@H_301_4@
[root@localhosti686]#pwd@H_301_4@
/root/rpmbuild/RPMS/i686@H_301_4@
[root@localhosti686]#ls@H_301_4@
login-1.0-1.i686.rpm@H_301_4@
测试安装
[html]view plaincopyprint?@H_301_4@
[root@localhostbinbin]#ls@H_301_4@
login-1.0-1.i686.rpm@H_301_4@
[root@localhostbinbin]#rpm-ivhlogin-1.0-1.i686.rpm@H_301_4@
[root@localhostbinbin]#/usr/bin/login-1.0/demo@H_301_4@
即可运行客户端@H_301_4@ 原文链接:https://www.f2er.com/centos/382213.html