【centos7常用技巧】RPM打包

前端之家收集整理的这篇文章主要介绍了【centos7常用技巧】RPM打包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、RPM打包的目的

  1. 1、当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可。
  2. 2、当需要在目标机中安装多个软件或者增加多个文件时,可以将整体打成RPM包,方便使用。

二、RPM打包命令

  1. $cd ~ #进入home目录
  2. $ sudo yum -y install rpmdevtools #安装rpm打包所需的工具
  3. $rpmdev-setuptree #生成rpm打包目录
  4. $cd rpmbuild/SPECS #进入SPECS目录
  5. $rpmdev-newspec test.spec #生成spec文件模板
  6. $mv your_path/source.tar.gz ../SOURCES #将要打包的源码以tar.gz的格式移动到SOURCES目录
  1. 此时会在home目录下生成一个rpmbuild目录,此目录下有五个子目录
  2. BUILD 编译时所用的暂存目录
  3. RPMS 放打包好的二进制rpm
  4. SOURCES 放置源代码和补丁文件
  5. SPECS 放置spec文件
  6. SRPMS 放置RPM源码包

三、spec文件简要说明

  1. RPM打包的关键之处就在于spec文件的编写

1、spec基本信息

  1. Name: 软件名称
  2. Version: 软件版本
  3. Release: 发布次数 如: 1%{?dist}
  4. Summary: 软件说明
  5. Group: 软件分组
  6. License: 授权模式,例如 GPL,即自由软件
  7. URL: 源码包的URL地址,可随意填写
  8. Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用
  9. BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为:
  10. %{_tmppath}/%{name}-%{version}-%{release}-root
  11. 后面可使用$RPM_BUILD_ROOT 方式引用
  12. BuildArch: 平台 %{_arch}
  13. BuildRequires: 编译过程依赖的工具
  14. Requires: 打包生成rpm包安装时所依赖的软件包
  15. %description 说明文档
  16. %prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数
  17. %build BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake,perl
  18. %install 安装到BUILDROOT虚拟目录
  19. %clean 清理文件
  20. %files 将指定的文件添加rpm包中,文档类型可用%doc,配置文件 用%config
  21. %changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容"
  22. 最终的生成rpm名称: {Name}-{Version}-{ReleSAE}-{BuildArch}.rpm

2、spec内部变量
在spec文件运行时,定义的宏会主动读取/usr/lib/rpm/macros中的变量
RPM_BUILD_DIR ~/rpmbuild/BUILD
RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT
3、spec文件示例(以git为例)

  1. Name: git
  2. Version: 2.10
  3. Release: 1%{?dist}
  4. Summary: this is the test code
  5. License: GPL
  6. URL: http://www.hao123.com
  7. Source0: %{name}-%{version}.tar.gz
  8. BuildRoot: %{_tmppath}/%{name}-%{version}-root
  9. BuildRequires: automake
  10. Requires: rpm
  11.  
  12. %description %prep %setup -q %build autoconf ./configure --prefix=/opt/git/ make %{?_smp_mflags} %install make DESTDIR=$RPM_BUILD_ROOT install %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT" make clean %files %defattr (-,root,root) /opt/git/ %changelog

4、生成RPM包

  1. $rpmbuild -ba test.spec #生成RPM包
  1. 生成RPM包在rpmbuild/RPMS目录下。

猜你在找的CentOS相关文章