spec文件知识整理

2023-11-03

rpmbuild目录下各个文件的用途:

spec文件一般包含以下部分:

==================================文件头====================================================

Name: hellorpm                                      #名字为源码tar.gz 包的名字

Version: 1.0.0                                          #版本号,一定要与tar.gz包的一致哦

Release: 1%{?dist}                                 #释出号,也就是第几次制作rpm

Summary: helloword                               #软件包简介,最好不要超过50字符

License: GPL                                            #许可,GPL还是BSD等 

URL:                                                           #可以写一个网址,也可以不要

Packager: abel                                          #作者,可以不要

Source0: %{name}-%{version}.tar.gz                                               

 #定义用到的source,也就是你的源码包,可以有多个,用Source1、Source2等表示

BuildRoot: %_topdir/BUILDROOT

#这个是安装或编译时使用的“虚拟目录”,该参数非常重要,因为在执行make install的过程中,需要把软件安装到这个路径中,在打包(即%files段)的时候,依赖“虚拟目录”为“根目录”进行操作。这个参数可以不必定义,系统默认此参数为:/root/rpmbuild/BUILDROOT/%{name}-%{version}-%{release}.x86_64,后面引用可以直接使用$RPM_BUILD_ROOT。

BuildRequires: gcc,make

#编译时的包依赖

Requires: python-apscheduler >= 2.1.2-1.el7,python-daemon >= 1.6-1.el7

#软件运行依赖的软件包,也可以指定最低版本如 bash >= 1.1.1

%description               #描述,随便写         

%package                    #定义一个子包,需要生成两个rpm包需要此项,只生成一个时不需要此项。举例如下:

%package devel
Summary: Header files and libraries for developing apps which will use bzip2.
Group: Development/Libraries
description devel
Header files 

当定义一个子包时,必须至少包含Summary:,Group:,description选项。%package后面可以加-n选项也可以不加,如果在%package时用-n选项,那么在description时也要用,如:description -n my-telnet-server,如果在%package时用-n选项,那么在%files时也要用,如:%files -n my-telnet-server

====================================预处理====================================================

%prep           #标志预处理开始

%setup     

#这个宏用来解压源代码(即Source的tar包),并将当前目录改为源代码解压之后产生的目录(即cd)。注意%setup默认解压后产生的目录是%{name}-%{version},所以打tar包的时候要注意目录的命名。如果tar包目录不是这种方式命名的,也可以用-n 选项来指定要切换到的目录。有以下选项可用。

                 %setup-q---------将 tar 命令的繁复输出关闭。

                %setup -nnewdir---------将压缩的软件源程序在newdir目录下解开。

                %setup -c---------------在解开源程序之前先创建目录。

                %setup -bnum------------在包含多个源码包(Source1、Source2等)时,将第num个源程序解压缩。

                %setup -T----------------不使用缺省的解压缩操作。
%patch 打补丁
通常补丁都会一起在源码tar.gz包中,或放到SOURCES目录下。一般参数为:
%patch -p1 使用前面定义的Patch补丁进行,-p1是忽略patch的第一层目录
%Patch2 -p1 -b xxx.patch 打上指定的补丁,-b是指生成备份文件

==================================编译安装=========================================================

%build                                                        #编译制作阶段,主要目的就是编译,如果不用编译就为空

make %{?_smp_mflags}                          #make后面的意思是:如果就多处理器的话make时并行编译

%install                                                       #开始把软件安装到虚拟的根目录中 (即$RPM_BUILD_ROOT)

#这个很重要,因为如果这里的路径不对的话,则下面%file中寻找文件的时候就会失败.需要说明的是,这里的%install主要就是为了后面的%file服务的。如果之后打rpm包,需要放在/usr/bin下,就需要在虚拟根目录中创建一个/usr/bin的目录,然后把需要的文件copy到这里。

如:install -d $RPM_BUILD_ROOT/usr/bin/

        install -m 755 a.out $RPM_BUILD_ROOT/usr/bin/

 

#下面的几步pre、post、preun、postun 没必要可以不写

%pre                  #rpm安装前制行的脚本

%post                #安装后执行的脚本

%preun             #卸载前执行的脚本

%postun           #卸载后执行的脚本

%clean             #清理段,删除buildroot rm -rf %{buildroot}

=================================打包=======================================================

%files                #定义那些文件或目录会放入rpm包中,如果前面有%package加了-n选项,这里也得加-n选项。

%defattr (-,root,root,-) #设定默认权限,如果下面没有指定权限,则继承默认 /etc/hello/word/helloword.c #将你需要打包的文件或目录写下来

###  7.chagelog section  改变日志段

%changelog  
 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spec文件知识整理 的相关文章

随机推荐

  • 机器学习入门-提取文章的主题词 1.jieba.analyse.extract_tags(提取主题词)

    1 jieba analyse extract tags text text必须是一连串的字符串才可以 第一步 进行语料库的读取 第二步 进行分词操作 第三步 载入停用词 同时对分词后的语料库进行停用词的去除 第四步 选取一段文本分词列表
  • 关于ASP.NET邮件发送的学习心得

    ASP net邮件发送是一种非常常见的功能 它可以让我们在网站中实现发送邮件的功能 比如用户注册成功后发送欢迎邮件 或者是找回密码时发送重置密码邮件等等 在学习ASP net邮件发送的过程中 我总结了以下几点心得 一 SMTP服务器的配置
  • 【解决问题】Transaction was marked for rollback only; cannot commit

    问题现象 导入文件的时候直接报错 Transaction was marked for rollback only cannot commit nested exception is org hibernate TransactionExc
  • JavaScript运算符详解

    JavaScript运算符详解 目录 JavaScript运算符详解 1 算术运算符 1 1 加法运算符 1 1 1 基本运算规则 1 1 2 对象的相加 1 2 余数运算符 1 3 自增和自减运算符 1 4 正负数值运算符 1 5 指数运
  • C单元测试框架——CMockery (3)中文手册

    Cmockery 单元测试框架 翻译的匆忙 没有校验 纰漏之处感谢请指正 转载请注明来自 see see 版权归原文 所有 Cmockery 是一个轻量级的库 作者用它来做C单元测试 目录 动机 概述 执行测试 异常处理 出错处理 断言 断
  • 河南省历年高考人数(2004-2021)

    一年一度高考时 我的高考已经过去15年了 河南高考人数创了新高 搜了一下历年人数 自己画了一个图
  • 前端XMLHttpRequest发送请求

    export function filePreview fileName ftpDownloadPath departmentId let mockXHR new XMLHttpRequest mockXHR open post baseU
  • python中的is None和==None

    1 python代码if not x 和if x is not None 和if not x is None 使用 2 python 中None is 和 的深入探讨 3 Python中为什么要用 is None 来代替 None
  • 服务器怎么设置虚拟网卡,VMWare虚拟网卡配置

    VMWare提供了三种工作模式 它们是bridged 桥接模式 NAT 网络地址转换模式 和host only 主机模式 要想在网络管理和维护中合理应用它们 你就应该先了解一下这三种工作模式 1 bridged 桥接模式 在这种模式下 VM
  • 计算机网路实验三 TCP和UDP协议分析

    计算机网路实验三 TCP和UDP协议分析 一 实验目的及任务 1 熟悉TCP UDP的协议基本原理 2 利用Wireshark对TCP和UDP进行协议分析 二 实验环境 与因特网连接的计算机网络系统 操作系统为windows Wiresha
  • EGL Error : Could not create the egl surface: error = 0x3003

    这个错误一般是屏幕位深参数不正确导致的 修改屏幕对应的fb参数即可 16 24 32等 echo 16 gt sys class graphics fb0 bits per pixel 这里我的屏幕对应的是fb0 如果是屏和fb不对应 也可
  • 通过C#代码实现开启摄像头,截图,录像等功能

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks using Sys
  • 详解 Solidity 事件Event

    很多同学对Solidity 中的Event有疑问 这篇文章就来详细的看看Solidity 中Event到底有什么用 写在前面 Solidity 是以太坊智能合约编程语言 阅读本文前 你应该对以太坊 智能合约有所了解 如果你还不了解 建议你先
  • uni push2.0实现消息推送(在线&离线)

    uni push2 0配置 需要开通uniCloud服务 推荐阿里云 生成证书 安卓 https ask dcloud net cn article 68 ios https docs getui com getui mobile ios
  • Python兼职这么火,千万别被骗了,这里整理了一份兼职要点,搞副业不踩坑!

    程序开发领域有这样一句话 人生苦短 我用Python 这本是开发者大佬Bruce Eckel的金句 Life is short you need Python 有趣的是 很多人并非专职程序员 但却把这句话奉为神谕 所以Python究竟有什么
  • C++ Primer阅读笔记--const限定符的使用

    1 知识点 const 对象必须初始化 const 对象一旦创建后其值不能再改变 因此 const 对象必须初始化 const int k 错误 未被初始化 const int j 42 正确 const对象被初始化 const 对象的共享
  • Linux下创建一个git仓库详细介绍

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 git仓库创建前的准备 注意 引号内请输入你自己设置的名字 和你自己的邮箱 此用户名和邮箱是git提交代码时用来显示你身份和联系方式的 以便其他人看不懂你
  • java score_Score.java

    package Score import java io File import java io FileInputStream import java io FileNotFoundException import java io IOE
  • 从防御到应急响应 XDR-翻译

    2017年 Gartner提出了精密编排的自动化响应SOAR模型 Security Orchestration Automation and Response 并且提出将安全产品以及安全流程链接和整合起来 通过预定义的工作流 Work fl
  • spec文件知识整理

    rpmbuild目录下各个文件的用途 spec文件一般包含以下部分 文件头 Name hellorpm 名字为源码tar gz 包的名字 Version 1 0 0 版本号 一定要与tar gz包的一致哦 Release 1 dist 释出