首页 > 其他分享 >rpm包制作脚本spec文件编写详细指南

rpm包制作脚本spec文件编写详细指南

时间:2023-11-10 16:06:46浏览次数:26  
标签:指南 脚本 rpm RPM Applications 软件包 安装 spec

概述

spec文件是制作rpm包的脚本文件,详细定义rpm包的信息、包含内容和安装位置,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要包含的文件列表等等。

spec文件有多个段组成,分别定义rpm编译、打包、安装等阶段的工作内容。

示例如下:

Name: myprogram
Version: 1.0
Release: 1
Vendor: Jaun
Summary: My program
License: GPL
URL: http://myprogram.com
Source0: myprogram-1.0.tar.gz
Group: Development/Tools
BuildRequires: gcc
%description
My program is a simple example program.
%prep
%setup -q
%build
  ./configure
  make
%install
	make install DESTDIR=%{buildroot}
%clean
	rm -rf %{buildroot}
%files
	%defattr(-,root,root)
	/sbin/myprogram
%post
	/sbin/ldconfig /sbin/myprogram
%preun
	/sbin/ldconfig /sbin/myprogram
%postun
	/sbin/ldconfig
%changelog


一、软件包描述

spec文件的最前部分通常为包描述内容,可以包含如下信息:

1.1、Name

软件包的名称,之后可以使用%{name}的方式进行引用,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。

1.2、Version

软件包的版本号,之后可以使用%{version}的方式进行引用,仅当软件包比以前有较大改变时才增加版本号。

1.3、Release

实际发行序列号,表明打包的时间,次数等信息,之后可以使用%{release}的方式进行引用

1.4、Vendor

软件开发者的名字。

1.5、Summary

用一句话概括该软件包尽量多的信息

1.6、License/Copyright

软件包的发行许可证,也就是软件的授权方式,通常是GPL,其他常见的有:GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等。

1.7、URL

发布者的网站,博客,邮箱等信息可放在这里

1.8、Source

源代码包,通常使用Source0,Source1…,之后也可以使用%{source0},%{source1}的方式进行引用.

1.9、Group

软件分组,建议使用标准分组,常见分组如下:

Amusements/Games	(娱乐/游戏)
Amusements/Graphics	(娱乐/图形)
Applications/Archiving	(应用/文档)
Applications/Communications	(应用/通讯)
Applications/Databases	(应用/数据库)
Applications/Editors	(应用/编辑器)
Applications/Emulators	(应用/仿真器)
Applications/Engineering	(应用/工程)
Applications/File	(应用/文件)
Applications/Internet	(应用/因特网)
Applications/Multimedia	(应用/多媒体)
Applications/Productivity	(应用/产品)
Applications/Publishing	(应用/印刷)
Applications/System	(应用/系统)
Applications/Text	(应用/文本)
Development/Debuggers	(开发/调试器)
Development/Languages	(开发/语言)
Development/Libraries	(开发/函数库)
Development/System	(开发/系统)
Development/Tools	(开发/工具)
Documentation	(文档)
System Environment/Base	(系统环境/基础)
System Environment/Daemons	(系统环境/守护)
System Environment/Kernel	(系统环境/内核)
System Environment/Libraries	(系统环境/函数库)
System Environment/Shells	(系统环境/接口)
User Interface/Desktops	(用户界面/桌面)
User Interface/X	(用户界面/X窗口)
User Interface/X Hardware Support	(用户界面/X硬件支持)

1.10、Patch

补丁源码包路径,可使用Patch0,Patch1…,之后也可以使用%{patch0},%{patch1}的方式进行引用

1.11、BuildRoot

安装或编绎时的根目录,在包生成的时候,如果不指定此目录作为虚拟根目录,在安装阶段,就会有系统根目录作为安装根目录

1.12、Requires

当前生成的RPM包,需要依赖的软件包名称,用>=或<=表示大于等于或小于等于指定的版本,符号两边用空格隔开,不同的软件包也用空格隔开

1.13、Packager

打包人信息

1.14、%description

软件的详细说明,可写在多个行上

1.15、BuildArch

指编译的目标处理器架构,noarch标识不指定,但通常都是以/usr/lib/rpm/marcros中的内容为默认值。


二、软件包生成阶段脚本

包生成阶段定义安装包制作阶段的详细工作内容,包括准备、编译、打包、清理、检查等。

这个过程的代码在运行在制作阶段,也就是在打包机上运行。当你运行rpmbuild命令时按顺序执行如下阶段阶段。

2.1、%prep

预备编绎阶段,可以使用脚本,将源代码包解压,有补丁的话,也将补丁进行处理,然后生成编绎配置信息(大部分软件会在此阶段执行configure脚本进行编绎检查);除了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行,如我们常写的tar解包命令。

2.2、%build

编绎阶段,所要执行的命令为生成软件包服务,大部分软件都会在此阶段执行make操作

2.3、%install

安装阶段,大部分软件都会在此阶段执行make install操作

2.4、%clean

清理阶段,安装完成后,将清理上述各个阶段生成的临时文件

2.5、%check rpm

软件包的测试。

三、包的安装阶段脚本

包的安装阶段脚本在执行rpm包安装过程中运行,运行在目标机器上,当你键入rpm命令开始安装时执行。

3.1、%pre

安装执行前脚本,即RPM包被安装前,先执行此部分脚本,如创建指定账号等

3.2、%post

安装执行后脚本,即RPM包被成功安装后,会继续执行此部分脚本,如设置开机启动,启动服务等

3.3、%preun

卸载执行前脚本,即RPM包被卸载前,先执行此部分脚本,如停止服务,取消开机启动等

3.4、%postun

卸载执行后脚本,即RPM包被成功卸载后,会继续执行此部分脚本,如删除指定账号等

四、包配置信息

4.1、%files 打包文件列表,需要被放入RPM包中的文件,在此列出,可为目录

4.2、%changelog 变更日记,可以标明本次打包需要提示的信息

4.3、%doc 表示这是文档文件,因此如果安装时使用–excludedocs将不会安装此类文件。

4.4、%dir 表示将dir目录路径下的内容打进rpm软件包里。

4.5、%config(noreplace) 该配置文件不会覆盖已经存在文件(RPM包中文件会以.rpmnew存在于系统,卸载时系统中的该配置文件会以.rpmsave保存下来,如果没有这个选项,安装时RPM包中文件会以.rpmorig存在于系统)覆盖已经存在文件(没被修改),创建新的文件加上扩展后缀.rpmnew(被修改)。

4.6、%attr 控制文件权限


五、制作和安装命令

制作

rpmbuild -bb xxx.spec 

查看详细帮助:

rpmbuild --help

安装

rpm -ivh xxx.rpm

查询包内容

rpm -qlp xxx.rpm

查询已安装的包

rpm -qa

标签:指南,脚本,rpm,RPM,Applications,软件包,安装,spec
From: https://blog.51cto.com/livestreaming/8303684

相关文章

  • 深入学习JavaScript ES8函数式编程:特性与实践指南
    ......
  • MT主机控制面板Plesk 使用指南
    我们是7月19号租下的主机,看到有些邻居拿到控制面板权限之后不知道该怎么用,决定写下这篇指南,希望对大家有帮助,同时也能让大家了解一下MT的控制后台。我们目前使用的Plesk版本是8.2.0。首先使用管理账号分配一下合租用户demo,权限和其他合租用户一样,但是一些服务器管理相关的界面就......
  • 初学者如何高效的学习Flutter?这份快速入门Flutter学习指南,拿走不谢
    什么是FlutterFlutter是Google推出并开源的移动端开发框架,主打跨平台、高保真、高性能。开发者可以通过Dart语言开发App,一套代码可以同时运行在iOS和Android平台。2018年12月,Google发布Flutter1.0。从那时候开始,Flutter以迅雷不及掩耳之势,迅速崛起,并稳固了其在市场上......
  • 【零基础速领】全套Android零基础入门指南(PDF文档+全套视频),Android Studio安装教程
    Android开发的入门可分成两个大的阶段,第一个语言的学习,第二个Android框架的学习。语言的学习Android开发目前主要有两种语言,java和kotlin,kotlin是目前google官方的首推语言,但个人还是建议先学java,因为至少在未来的几年内,公司的项目肯定是还会有大量的java代码,你至少需要能看懂,能去......
  • 2023金九银十Android程序员面试题参考指南!
    前言还有不到一个礼拜就是金九银十招聘高峰期了,在这里分享一份《Android面试题汇总》这些面试题都是互联网大厂真实流出的面试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题都是我也是整理出来的精品资料。希望能给那些有需要朋友在求职......
  • 「Java开发指南」如何用MyEclipse搭建Spring MVC应用程序?(二)
    本教程将指导开发者如何生成一个可运行的SpringMVC客户应用程序,该应用程序实现域模型的CRUD应用程序模式。在本教程中,您将学习如何:从数据库表的Scaffold到现有项目部署搭建的应用程序在上文中,我们介绍了如何创建一个Web项目和来自数据库表的Scaffold等,本文将继续介绍如何部......
  • One specific Eco-Environmental Protection Measure of light pollution
     Inthissection,Iwillshowthespecificlegalmeasuresforlightpollutioninacomparativeform. ForeignlightpollutionlegislationexperienceOnlightpollution,manyforeigncountriesandregionshaveprovisionsofthelaw,theauthorslightly......
  • 恒创科技:不可忽视的国外服务器地址IP选择指南
    ​在如今互联网高速发展的时代,海外服务器扮演着重要的角色。选择合适的国外服务器IP地址却是一项复杂而又关键的任务。本文将为您介绍一些不可忽视的国外服务器地址IP选择指南。私有IP地址:私有IP地址是指在局域网内使用的IP地址,用于内部通信。这种类型的IP地址对于......
  • 三坐标测量机轮廓度测量操作指南:打造高精度测量解决方案
    在现代制造业中,精确度和质量控制是至关重要的因素。而对于产品的尺寸和形状的测量,三坐标测量机成为了一种重要工具。一、为什么选择三坐标测量机?三坐标测量机是一种能够精确测量物体三维尺寸和形状的设备。相较于传统的测量工具,三坐标测量机具有以下优势:高精度:三坐标测量机采用先......
  • [左神面试指南] 链表[下]篇
    CDxxx两个单链表相交的一系列问题⭐剑指offer链表篇JZ52两个链表的第一个公共结点剑指offer链表篇JZ23链表中环的入口结点publicNodegetIntersectNode(Nodehead1,Nodehead2){if(head1==null||head2==null)returnnull;Nodeloo......