• 【centos7常用技巧】RPM打包


    一、RPM打包的目的

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

    二、RPM打包命令

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

    三、spec文件简要说明

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

    1、spec基本信息

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

    Name:  		    git         
    Version:        2.10
    Release:        1%{?dist}
    Summary:        this is the test code
    License:        GPL
    URL:            http://www.hao123.com
    Source0:        %{name}-%{version}.tar.gz
    BuildRoot: 		%{_tmppath}/%{name}-%{version}-root 
    BuildRequires:  automake
    Requires:       rpm
    
    %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包

    $rpmbuild -ba test.spec  #生成RPM包
    
    生成的RPM包在rpmbuild/RPMS目录下。
  • 相关阅读:
    printf和sprintf
    操作数、运算符、表达式
    全自动加法机
    Ascll、GB2312、Ansi
    数组
    循环
    编程命名规范
    浮点数及缺陷
    Android编码规范
    RGB着色对照表
  • 原文地址:https://www.cnblogs.com/startcentos/p/6147453.html
Copyright © 2020-2023  润新知