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

前端之家收集整理的这篇文章主要介绍了CentOS下关于源码打包成rpm安装包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


平台:centos6.5

首先是搭建环境:

[cpp]view plaincopyprint?

  1. [root@localhostbinbin]#yuminstall-yrpm-build</span>

[cpp]view plaincopyprint?

  1. [root@localhostbinbin]#yuminstallredhat-rpm-config

之后会在/root目录下有一个rpmbuild目录

[cpp]view plaincopyprint?

  1. [root@localhostrpmbuild]#pwd

  2. /root/rpmbuild</span>

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

  1. [root@localhostrpmbuild]#ls

  2. BUILDBUILDROOTRPMSSOURCESSPECSSRPMS


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


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

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

  1. [root@localhostbinbin]#tarzcvflogin-1.0.tar.gzlogin-1.0

  2. [root@localhostbinbin]#ls

  3. login-1.0.tar.gzlogin-1.0


将login-1.0.tar.gz拷贝至rpmbuild/SOUCES目录下
[html]view plaincopyprint?

  1. [root@localhostbinbin]#cplogin-1.0.tar.gz/root/rpmbuild/SOURCES

  2. [root@localhostSOURCES]#ls

  3. login-1.0.tar.gz



此时进入SPEC目录,编写SPEC文件(此步是打包rpm包的关键一步)
[html]view plaincopyprint?

  1. [root@localhostSOURCES]#cd../SPECS

  2. [root@localhostSPECS]#touchlogin.spec

  3. [root@localhostSPECS]#ls

  4. login.spec

  5. [root@localhostSPECS]#vimlogin.spec


[html]view plaincopyprint?

  1. #名字

  2. Name:login

  3. #版本号

  4. Version:1.0

  5. #编译的次序

  6. Release:1

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

  8. Summary:istest

  9. Group:Applications/Communications

  10. License:GPL

  11. URL:www.ciis.com

  12. #要安装的压缩包源文件

  13. Source:login-1.0.tar.gz


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

  15. %description

  16. atest

  17. #构建包前的处理

  18. %prep



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

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

  21. %setup-q



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

  23. %build

  24. make



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

  26. %install



  27. #makeinstall#使用makefile的install,方便

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

  29. rm-rf$RPM_BUILD_ROOT/*

  30. mkdir-p$RPM_BUILD_ROOT/usr/bin/

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



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

  33. %post

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

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



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

  37. %postun

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



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

  40. %clean

  41. rm-rf$RPM_BUILD_ROOT



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

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

  44. #提示找不到文件

  45. %files

  46. %defattr(-,root,root)

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



  48. %changelog



保存退出,执行打包命令
[html]view plaincopyprint?

  1. [root@localhostSPECS]#rpmbuild-balogin.spec</span>


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

  1. [root@localhostSPECS]#cd../RPMS/i686

  2. [root@localhosti686]#pwd

  3. /root/rpmbuild/RPMS/i686

  4. [root@localhosti686]#ls

  5. login-1.0-1.i686.rpm



测试安装
[html]view plaincopyprint?

  1. [root@localhostbinbin]#ls

  2. login-1.0-1.i686.rpm

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

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

即可运行客户端

猜你在找的CentOS相关文章