RPM包制作教程
一、RPM介绍
RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;现在应为RPM Package Manager的缩写。在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用; RPM包中除了包括程序运行时所需要的文件,也有其它的文件;一个RPM包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。
RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由使用及传播RPM。
二、RPM包分类
rpm分为两大类,
1 二进制类包,包括rpm安装包(一般分为i386和x86等几种)和调式信息包等 2 源码类包,源码包和开发包应该归位此类
它们之间的关系是,最先我们按rpm打包要求改造软件项目源码,当符合要求之后就可以使用rpmbuild命令来生成不同的rpm包,同时生成的包之间版本是直接对应的,比如相同的源码包将生成完全相同的二进制rpm包。当你在网上查找rpm包时,一般你可以在RPMS目录中找到预编译的二进制包,而源码包则会在SRPMS目录内。
我们这里提到的RPM制作就是指改造软件源代码使之符合RPM打包要求的过程,这也可以等价为RPM源码包的制作过程,因为当你有了源码包就可以直接编译得到二进制安装包和其他任意包。
三、RPM包制作介绍
RPM包的制作,即是RPM源码包的制作。
RPM包工作的原理
RPM是为解决源码包不易安装(需要编译)和软件包相互之间依赖(是RPM包管理器可以一定程度解决依赖问题)问题,它通过在探测源码包在build和install阶段的动作获得最终生成的需要安装的系统里的文件,并记录下一些必要的操作(比如安装完成后执行某项操作),然后把此组成为一个整体,当在用户安装此包时把前面获得的所有问题和记录的所有操作原原本本的作用的实际系统上。
把一个普通的源码打成RPM包,需要下面一些操作
1、先需要对项目的Makefile作必要的改造以支持RPM打包操作(实际上此操作不是绝对的,SPEC文档和Makefile的是协调统一工作的,只要他们之间配合好了其他都无所谓,我们一般只是推荐大家尽量按行业标准规范操作而已) 2、次是针对当前项目撰写SPEC文档,SPEC文档包括了RPM打包过程的操作内容和新生成的RPM包的基本信息等,它的作用对象是打包程序rpmbuild。
四、RPM包制作过程
方法1:使用rpmbuild来制作rpm包
方法2:使用fpm来制作rpm包
RPM包制作教程的更多相关文章
- CentOS下的RPM包制作教程收集(rpmbuild)
http://www.jinbuguo.com/redhat/rpmbuild.html(中文手册) https://www.linuxidc.com/Linux/2016-09/134955.htm ...
- php-7.1.0 rpm包制作
nginx-1.8.0 rpm包制作见上篇文章:http://www.cnblogs.com/xiaoming279/p/6251149.html spec文件 Name: php Version: ...
- rpm包制作(待实验)
作者:firefoxbug 时间:July 18, 2014 rpm包命名规范 对于rpm包的命名符合如下规范. %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm N ...
- RPM包制作方法
一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...
- rpm包制作介绍
RPM(Rpm Package Management)在ReadHat等发行版下被用作软件包管理程序,其将某个软件相关的文件置入一个.rpm包中,用rpm命令,我们可以方便地完成Linux下软件安装. ...
- nginx-1.8.0 rpm包制作
1.安装rpm-build # yum install rpm-build 2.创建制作RPM包目录 # cat /root/.rpmmacros %_topdir /root/rpmbuild %_ ...
- 实战RPM包制作
在开发中经常会用到一些rpm包,但是一直没有自己手动制作过.今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo ...
- RPM包制作过程(一)
本机环境:centos7,64位 1. 首先安装工具,rpmbuild可能在rpmdevtools里已经包含 #yum install rpm-devel.x86_64 #yum install rp ...
- 简单介绍RPM包制作方法
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用r ...
随机推荐
- [转载]C/C++框架和库
C/C++框架和库 装载自:http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 Webbench Web ...
- Javascript 接口模拟
Javascript接口模拟可以通过三种方式实现文档手段(注释).辅助类和鸭式辨. 第一种和第二种只形式上体现没有真正的实现. 鸭式辨实现原理是:"只要能像鸭子一样叫和走就是鸭子" ...
- Effective java笔记(八),异常
57.只针对异常的情况才使用异常 try { int i = 0; while(true) range[i++].climb(); }catch(ArrayIndexOutOfBoundsExcept ...
- ubuntu入门
Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音.了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:) 大多数的美国人读 ubun ...
- [WCF编程]10.操作:单向操作
一.单向操作概述 WCF提供了单向操作,一旦客户端调用,WCF会生成一个请求,但没有相关的应答信息返回给客户端.所以,单向操作是不能有返回值,服务抛出的任何异常都不会传递给客户端. 理想情况下,一旦客 ...
- 引用Microsoft.Office.Interop.Excel出现的问题
引用Microsoft.Office.Interop.Excel出现的问题 转自:http://www.hccar.com/Content,2008,6,11,75.aspx,作者:方继祥 操作背 ...
- 【C#进阶系列】28 基元线程同步构造
多个线程同时访问共享数据时,线程同步能防止数据损坏.之所以要强调同时,是因为线程同步问题实际上就是计时问题. 不需要线程同步是最理想的情况,因为线程同步一般很繁琐,涉及到线程同步锁的获取和释放,容易遗 ...
- sqlserver2008存储过程(比较两个日期大小和获取当前月最大天数的存储过程)
下面简单介绍sqlserver2008两个常用的存储过程 1.比较两个日期大小的存储过程 2.获取当前月份的最大天数的存储过程 1.创建比较两个日期大小的存储过程 1)创建比较两个日期大小的存储过程 ...
- Java日期时间操作的一些方法
1. 获得Calendar实例: Calendar c = Calendar.getInstance(); 2. 定义日期/时间的格式: SimpleDateFormat sdf =new Simpl ...
- java Io缓冲区复制文件
//直接写代码了 类和包自己导入创建 ,手打很累的 public static void main(String args[]){ FileReader fr=null; //文件输入流 Fil ...