zoukankan      html  css  js  c++  java
  • spec文件

    1.rpm构建环境相关命令:

    需要安装:
    yum install rpm-build
    yum install rpmdevtools

    rpmdev-setuptree #默认在/root/下新建工作目录,需要先安装rpmdevtools
    rpmdev-newspec #新建spec文件
    或者从/etc/rpmdevtools这个目录下copy相应的spec模板来修改

    2.目录结构
    ~/rpmbuild
    ~/rpmbuild/SOURCES       #放置打包资源,包括源码打包文件和补丁文件等
    ~/rpmbuild/SPECS       #放置SPEC文档
    ~/rpmbuild/BUILD      #打包过程中的工作目录
    ~/rpmbuild/RPMS         #存放生成的二进制包
    ~/rpmbuild/RPMS/x86_64    #存放生成的x86_64结构包
    ~/rpmbuild/SRPMS         #存放生成的源码包

    源码包和二进制包的区别:
    二进制包里面包括了已经经过编译,可以马上运行的程序。你只需要下载和解包(安装)它们以后,就马上可以使用;
    源代码包里面包括了程序原始的程序代码(一般包括tar包、patch、spec文件...)。

    3.rpmbuild 命令
    -bp #只执行spec的%pre 段(解开源码包并打补丁,即只做准备)
    -bi #执行spec中%pre,%build与%install(准备,编译并安装)
    -bl #检查spec中的%file段(查看文件是否齐全)
    -bb #只建立二进制包(常用)
    -bs #只建立源码包

    4.一个简单的例子:

    http://blog.csdn.net/younger_china/article/details/53131128


    5. 实例

    Name:           es_docker
    Version:        5.6
    Release:        1%{?dist}
    Summary:        es_docker
    
    License:        GPL
    Source0:        es_docker-5.6.tgz    #将需要打包的文件压缩放置SOURCES/
    
    
    %description
    
    %prep
    %setup -q
    
    %install
    echo "es_docker Install"
    mkdir -p %{buildroot}/usr/vtm/es_docker/
    echo %{buildroot}     #为BUILD目录
    pwd
    cp -rf * %{buildroot}/usr/vtm/es_docker/
    
    %post
    cd /usr/vtm/es_docker/
    cp docker-compose /usr/bin/
    chmod 755 /usr/bin/docker-compose
    echo "es_docker Installation Done!"
    
    %files
    %doc
    /usr/vtm/es_docker/*
    
    %changelog    

     整理:

    预处理%prep
    用来准备要编译的软件。通常,这一段落将归档中的源代码解压,并应用补丁

    宏%setup
    这个宏解压源代码,将当前目录改为源代码解压之后产生的目录(BUILD/es_docker-5.6/)

    安装%install
    定义在安装软件包时将执行命令,将已编译的软件安装到虚拟的目录结构中,从而可以打包成一个 RPM

    %post
    软件安装完成后的所需执行的配置工作

    清理%clean
    保证下次构建之前 Buildroot 被清空

    文件%files
    定义软件包所包含的文件,分为三类:说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。
    在虚拟根目录下进行,千万不要写绝对路径,而应用宏或变量表示相对路径

    %defattr (-,root,root)
    指定包装文件的属性

  • 相关阅读:
    LeetCode题目:Gray Code
    LeetCode题目: Remove Duplicate Letters
    非阻塞socket中read、write返回值
    C连接MySql
    使用GDB调试程序
    C语言中使用库函数解析命令行参数
    把服务器当网盘玩 教你从云服务器下载自己的文件
    微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
    如何避免高不成低不就? 疫情当下Java学习路线分享
    微信小程序 获取手机号 JS
  • 原文地址:https://www.cnblogs.com/stellar/p/7744518.html
Copyright © 2011-2022 走看看