您的位置:首页 > 运维架构 > Linux

CentOS下关于源码打包成rpm安装包

2016-05-30 07:58 501 查看

CentOS下关于源码打包成rpm安装包

平台:centos6.5
首先是搭建环境:
[cpp]view plaincopyprint?
[root@localhostbinbin]#yuminstall-yrpm-build</span>

[cpp]view plaincopyprint?
[root@localhostbinbin]#yuminstallredhat-rpm-config

之后会在/root目录下有一个rpmbuild目录
[cpp]view plaincopyprint?
[root@localhostrpmbuild]#pwd

/root/rpmbuild</span>

进入该目录,里面有五个文件夹分别是BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
刚开始时都是空的
[html]view plaincopyprint?
[root@localhostrpmbuild]#ls

BUILDBUILDROOTRPMSSOURCESSPEC***PMS

如果没有这几个目录可以手动添加创建

这六个目录的作用分别是:
BUILD :rpmbuild编译软件的目录
BUILDROOT :
RPMS :rpmbuild创建binary RPM 所存放的目录
SOURCES :存放源代码的目录
SPECS :存放spec文件的目录
SRPMS :rpmbuild创建souce RPM 所存放的目录

首先是将放置有源码的文件夹进行打包。此处我的文件夹起名为login-1.0
[cpp]view plaincopyprint?
[root@localhostbinbin]#tarzcvflogin-1.0.tar.gzlogin-1.0

[root@localhostbinbin]#ls

login-1.0.tar.gzlogin-1.0

将login-1.0.tar.gz拷贝至rpmbuild/SOUCES目录下
[html]view plaincopyprint?
[root@localhostbinbin]#cplogin-1.0.tar.gz/root/rpmbuild/SOURCES

[root@localhostSOURCES]#ls

login-1.0.tar.gz

此时进入SPEC目录,编写SPEC文件(此步是打包rpm包的关键一步)
[html]view plaincopyprint?
[root@localhostSOURCES]#cd../SPECS

[root@localhostSPECS]#touchlogin.spec

[root@localhostSPECS]#ls

login.spec

[root@localhostSPECS]#vimlogin.spec

[html]view plaincopyprint?
#名字

Name:login

#版本号

Version:1.0

#编译的次序

Release:1

#一句话介绍包(不超过50个字符)

Summary:istest

Group:Applications/Communications

License:GPL

URL:www.ciis.com

#要安装的压缩包源文件

Source:login-1.0.tar.gz

BuildRoot:%{_tmppath}/%{name}-%{version}-root

%description

atest

#构建包前的处理

%prep

#--解压:这里主要是构建的时候解压缩源码到系统目录,这里是$RPM_BUILD_DIR

#setup-c解压的时候会生成一个和压缩包同名的新目录;setup-ndirname指定一个新的目录以解压缩setup-q直接解压,不产生新的目录

%setup-q

#--生成:这里主要是构建二进制包的的时候执行编译生成二进制文件

%build

make

#--安装:构建的时候把当前文件安装到系统目录$RPM_BUILD_ROOT/下,二进制安装的时候是安装文件到/根目录下

%install

#makeinstall#使用makefile的install,方便

#没有makefile,自定义安装脚本

rm-rf$RPM_BUILD_ROOT/*

mkdir-p$RPM_BUILD_ROOT/usr/bin/

cp-r$RPM_BUILD_DIR/%{name}-%{version}$RPM_BUILD_ROOT/usr/bin/

#安装完成后续:二进制包安装后的处理脚本

%post

chmod+x/usr/bin/%{name}-%{version}/confAgent

chmod+x/usr/bin/%{name}-%{version}/check_confAgent.sh

#卸载完成后续:二进制包卸载完成后的处理脚本

%postun

rm-fr/usr/bin/%{name}-%{version}

#清理:构建包完成后处理

%clean

rm-rf$RPM_BUILD_ROOT

#文件列表:指示哪些文件应该被安装到系统中以及安装的目录;

#构建包时,文件列表的文件或目录必须和虚拟目录RPM_BUILD_ROOT中的文件或目录一致,否则构建时会

#提示找不到文件

%files

%defattr(-,root,root)

/usr/bin/%{name}-%{version}

%changelog

保存退出,执行打包命令
[html]view plaincopyprint?
[root@localhostSPECS]#rpmbuild-balogin.spec</span>

之后会在RPMS/i686目录下有相应的rpm包,这里是login-1.0-1.i686.rpm
[html]view plaincopyprint?
[root@localhostSPECS]#cd../RPMS/i686

[root@localhosti686]#pwd

/root/rpmbuild/RPMS/i686

[root@localhosti686]#ls

login-1.0-1.i686.rpm

测试安装
[html]view plaincopyprint?
[root@localhostbinbin]#ls

login-1.0-1.i686.rpm

[root@localhostbinbin]#rpm-ivhlogin-1.0-1.i686.rpm

[root@localhostbinbin]#/usr/bin/login-1.0/demo

即可运行客户端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  软件