RPM打包技术和典型SPEC文件分析

合集下载

RPM详解——精选推荐

RPM详解——精选推荐

RPM详解概述RPM⽂件结构RPM包⽂件⼀般包含4部分:Lead、Signature、Header、Payloadlead----开头的标识部分,⽤于标识此份⽂件为⼀个RPM包Signature-----数字签名,通常包括针对头部的签名和针对载荷的签名Header--------头部,通常包括版权信息,版本号,包描述等信息;有时还包含⼀些特定的标签(Tag),⽐如PRE Tag就包含了rpm包在安装前需要执⾏的预安装脚本。

Payload-------载荷,包含实际安装的⽂件RPM命令安装及升级安装的⼀般步骤install a package, it goes through a number of steps:1.Checking the package and the files it wants to install2.Performing preinstallation tasks3.Uncompressing the files and placing them in the proper locations4.Performing post-processing tasks5.Updating the RPM DatabaseRPM数据库的相关⽂件位于/var/lib/rpm/⽬录下。

新安装@前⾯为⽤户名及密码,⽤户名uncljoe ,密码workers升级rpm -Uvh ⽆论软件包存在与否都执⾏升级或rpm -Fvh仅针对已安装的软件包进⾏升级升级时,RPM会对每个⽂件,⽐对三个版本的MD5校验值(old package file,current file,new package file)。

如果old package file与new package file的MD5校验值⼀样,但current file 不同,说明新⽼版本的⽂件是⼀样的,但管理员编辑过该⽂件(通常是⼀些配置⽂件),rpm 会保留current file(保留管理员的所做的配置),⽽不会⽤新包中的⽂件覆盖。

精通RPM之制作篇(中)

精通RPM之制作篇(中)

精通RPM之制作篇(中)一个RPM的软件包描述文件,可以仅生成一个父包或一个子包,也可以生成一个父包和多个子包。

通过设定子包选项,可以使生成的子包采用"软件名-子包名"的标准命名,也可使生成的子包采用自己的名字。

一个子包,通常是按照其包含的文件的用途或类型来归并文件进而打成包裹的。

象前面的LZE描述文件很简单,它将所有文件都包含进了父包中。

我们也可以将文件分类作成子软件包,如可分成执行程序子包(lze-bin),配置文件子包(lze-config)和说明文档包(lze-doc)。

我们还可以只分出一个配置文件子包(lze-config),其余文件均打入父包中(lze)。

通过这样详细地分类,有助于用户管理软件包,避免安装多余的东西,同时也有助于升级。

要想创建子软件包,必须描述以下内容:1. %package :用此段创建一个子包。

其名字由子包选项控制。

子包选项为"[-n] 子包名",不选-n时,生成的子包文件为"软件名-子包名-版本号-释出号.体系.rpm";选-n时,生成的子包文件为"子包名-版本号-释出号.体系.rpm"。

其应用格式为:2. Summary此域必须在%package下面,它定义子包功能简介(一句话说明)。

格式为:3. Group此域必须在%package下面,其定义子包所属软件类别(软件类别请参见<<精通RPM之五——查询篇>>)。

格式为:4. %description :此描述段的内容是较为详细的子包功能介绍,介绍为文本形式,格式不作要求,可任意换行或分段。

格式为:5. %files :此文件段的内容是子包所要包含的文件列表。

文件列表中,一个文件占用一行,还可使用多种文件修饰符。

(详见<<精通RPM之七——制作篇(上)>>)段名应用格式为:注意: 上述%description与%files段所用的子包选项形式,必须与%package所用的子包选项形式一致,否则的话,它们定义的不是同一个子包,RPM检查时将报错退出。

rpm详解

rpm详解

1)RPM(Redhat Package Management)是由RedHat研发的,在Linux 系统下的系统包管理工具。

RPM包的产生目的:使包的安装和卸载过程更容易,他能够证实一个包是否已正确安装了,能简化包的建立过程,能从原始码建立整个包,他能用于不同的体系结构。

RPM系统已成为目前Linux系统下包管理工具事实上的标准,并且他也移植到非常多商业的unix系统之下。

RPM包组成:由包标签对他标识,包标签包含软件名,软件版本,包的发行版本几部分。

在包的内部还包含包的建立时间,包的内容描述,安装包的所有文件的大小,数字签名以证实包的完整性等信息。

RMP包还包含包内的文件信息,其中包括:每个文件的文件名,每个文件的权限,文件的属组和拥有者,每个文件的md5校验和,文件的内容等。

RPM包名的组成:rpm包的名字都包含一个后缀“arch.rpm”,arch 指的是体系结构,对于Intel平台的有i386、i586、i686等,你所安装的包必须要和机器上的共享库的版本相匹配。

如果你发现某个RPM包没有安装,你能自己安装。

所有时候,你都能(必须是root用户)安装RPM包。

RPM包管理系统提供的功能:安装新的包,卸载旧的包,将一个旧包升级为新的包,获得已安装包的信息等。

周详讲述RPM源码包的构成:RPM需要一系列目录完成建立的工作。

正常的目录结构通常由一个顶级目录/usr/src/redhat/和五个子目录构成。

这五个子目录分别是:SOURCES------包含原始的源文件和补丁文件。

SPECS--------包含控制RPM包建立过程的spec文件。

BUILD--------包含源码解包和软件建立的目录。

RPMS---------包含建立过程创建的二进制包文件。

SRPMS--------包含建立过程创建的源码包文件。

(在RPMS或SRPMS目录下通常还会有关于RPM包目标平台的目录。

例如,i386、i586、i686等代表和Intel兼容cpu的平台,noarch目录下的RPM 包代表能在所有平台下执行。

rpm包组成结构

rpm包组成结构

rpm包组成结构RPM(Red Hat Package Manager)是一种在Linux系统中广泛使用的软件包管理工具。

它通过将软件打包成RPM包来方便地安装、升级和卸载软件。

RPM包的组成结构是指在创建和使用RPM包时所需的各个元素和组件。

本文将介绍RPM 包的组成结构,包括RPM包的文件结构、元数据和其他重要组件。

一、RPM包的文件结构RPM包的文件结构是指RPM包内部的目录和文件的组织结构。

RPM包内部有一些预定义的目录,包括:1. /usr:包含了系统的可执行文件、库文件和头文件等。

2. /etc:包含了系统的配置文件。

3. /var:包含了系统的变量文件,如日志文件和临时文件。

4. /bin:包含了系统的可执行文件。

此外,RPM包还包含了一些其他的目录和文件,包括:1. /usr/share/doc:包含了软件的文档文件。

2. /usr/share/man:包含了软件的man手册文件。

3. /usr/lib:包含了软件的库文件。

4. /usr/include:包含了软件的头文件。

RPM包的文件结构是由RPM包的构建过程和软件包的需求来确定的。

在创建RPM包时,需要将软件的文件和目录按照一定的规则放置到RPM包内部的相应位置。

二、RPM包的元数据RPM包的元数据是指RPM包中包含的关于软件的信息。

RPM包的元数据包括:1. 包的名称(Name):指定了软件包的名称。

2. 包的版本(Version):指定了软件包的版本号。

3. 包的发布(Release):指定了软件包的发布号。

4. 包的摘要(Summary):提供了软件包的简要描述。

5. 包的描述(Description):提供了软件包的详细描述。

6. 包的依赖关系(Dependencies):指定了软件包依赖的其他软件包。

7. 包的授权(License):指定了软件包的授权信息。

8. 包的构建时间(Build Time):指定了软件包的构建时间。

第三讲-SPEC详解

第三讲-SPEC详解

主要内容
注释行
文件头 功能段
注释行
它以#号开头,起注解作用,可帮助用户理解所写的内容,但对软件包 的生成不起任何作用。
如何编写注释行呢?
实例:#This is a example
文件头
文件头描述软件包的基本信息,它包含若干个域,其中有必选的域, 也有可选的域。一个域占用一行。其描述格式为: 域名 : 域值 分为以下两种域:必选域、可选域
文件头
源码相关
3. Patch:它的本义是补丁,用在这里指的是源程序的补丁。 此域描述格式为:Patch[编号] : 源码补丁文件 例: Patch0 : test-1.0-bugfix.patch Patch1 : test-1.0-config.patch 4.NoPatch:此域的功能类似NoSource,其定义的编号对应的补丁文 件RPM不作打包处理。 其描述格式:NoPatch : 补丁编号 例:NoPatch : 0 NoPatch : 1
功能段
必选功能段
%description 本段是描述段,段的内容是对软件包进行较为详细的介绍,不像文件 头的Summary域仅用一句话说明。 此域描述格式有三种: 1.%description [子包选项] 本功能段描述的内容是关于父包的。它用软件名来命令,其名字格式 是:软件名-版本号-发布序列号.体系.rpm 例:test-1.0-1.i386.rpm
4.Exclusiveos:此域定义软件包适用的体系。 其描述格式:Exclusiveos : 操作系统1 [操作系统2] ... 例:Exclusiveos : linux solaris
文件头
目录相关
1. Prefix:此域定义可重定位的目录前缀,可重复编写。 此域描述格式为:Prefix : 目录前缀1 [目录前缀2] ... 例:Prefix : /usr /etc

RPM包制作

RPM包制作

编写.spec文件
这个文件中包括关于一个软件包的诸多信息,如 :软件包的名字、版本、类别、说明摘要、包中 的文件以及要执行的shell脚本等。 .spec文件分成多个部分,每个部分指定要执行的 操作,操作用shell脚本描述。通常分为下面几个 部分:编译前的准备,编译,安装,安装前的准 备,安装后,卸载前,卸载后的善后工作等
RPM包制作
NFSWuxi新员工培训第四课
RPM包制作
RPM(RedHat Package Manager)包是RedHat Linux的包管理工具,由于RPM包安装卸载简单、 升级维护方便、查询功能强大等特点,越来越多 的开发者喜欢采用RPM包的形式发布自己的软件 。目前,Fedora,RedHat,Suse,YellowDog等 主流发行版均采用RPM包管理套件。
编写.spec文件
指示符: description pre prep setup build
编写.spec文件
指示符: install file defattr post preun postun
编写.spec文件
• • • • Description: 关于RPM包的描述 Pre: 安装前的准备 Prep: 编译前的准备 Setup: 寻找将源码包并解压
编写.spec文件
SPEC文件的要素有: 变量 指示符
编写.spec文件
变量: Summary Name Version Release Group
编写.spec文件
变量: License Source[0-n] BuildRequires Requires BuildRoot
编写.spec文件
RPM包制作
制作RPM包并不复杂,其中的关键是.spec描述文 件的编写。该文件提供了将软件打包所必须的信 息。开发者在编写完成这个描述文件之后,就可 以通过打包工具rpmbuild来自动完成打包。 rpmbuild根据.spec描述文件内容生成rpm包。编 写.spec文件是开发者打包的主要工作内容。下面 我们介绍如何编写.spec文件。

linux程序包管理之rpm

linux程序包管理之rpm

linux程序的源码编译安装方式毕竟比较繁琐,安装后也不易管理,为此linux 官方提供了专门的程序包管理器来解决这些问题一、程序包管理器程序包管理器:将源程序编译并打包成一个或有限的几个文件,可用于实现安装、查询、升级、卸载等功能程序包管理器的管理实现:①数据库,用于记录:程序名及版本程序之间的依赖关系功能性说明安装生成的各文件路径及校验码②程序的组成清单:文件清单安装卸载时运行的脚本常用程序包管理器:Redhat:rpm(redhat package manager),其对应的程序包后缀为.rpm,对应的前端工具为yumDebian:dpkg,其对应的程序包后缀为.deb,对应的前端工具为apt-getrpm包的制作需要rpmbuild工具,其制作过程这里不作说明,以下详解一下rpm包的管理二、rpm程序包2.1、rpm包命名格式:name-version-release.arch.rpm,如httpd-2.2.15-45.el6.centos.x86_64.rpmversion:major.minor.release,同源码release:rpm自身发行号,与源码的发行号无关,仅用于标识对rpm包不同制作的修订,同时release还包含此包适用的OSarch:适用的硬件平台x86: i386, i486, i586, i686等x86_64: x86_64powerpc: ppcnoarch: 依赖于虚拟机2.2、rpm分包机制一个程序体积可能很大,为了方便管理,rpm包管理器依据功能性差异,将一个程序打包成若干个包主包(核心包):其name与源程序一致,如httpd-2.2.15-45.el6.centos.x86_64.rpm子包:httpd-devel-2.2.15-45.el6.centos.x86_64.rpmhttpd-tools-2.2.15-45.el6.centos.x86_64.rpm区别:程序x依赖于y和z,若x是基于rpm包安装,则x依赖的是y和z的核心包;若x基于源码编译安装,则x依赖的是y和z的开发包2.3、获取rpm包的途径①官方发行的光盘、官方站点、镜像站点②项目的官网:源代码、rpm包③第三方机构或个人制作并公开发布许多rpm包④额外程序包的可靠途径:EPEL,为Federa所维护2.4、rpm包的合法性验证rpm包的合法性包括来源合法性和包的完整性两个方面包的制作者使用单向加密算法提取出原始数据的特征码,并使用自己的私钥加密这段特征码,附加在原始数据之后验证过程:前提:必须有可靠机制获取到包制作者的公钥①使用包制作者的公钥解密那段加密的特征码,能解密则说明来源合法②使用与制作者同样的单向加密算法提取数据的特征码,并与解密得到的特征码比对,相同则说明包完整性没问题2.5、rpm 包管理器的使用㈠验证程序包的合法性我们在安装rpm 程序包之前,一般要检验其合法性,尤其是从非官方或非权威站点获得的包。

rpm 封包格式描述

rpm 封包格式描述

"rpm" 是一种常见的Linux软件包管理工具,用于打包、安装、升级和卸载软件包。

rpm软件包格式是一种用于在Linux系统上分发和安装软件的标准格式。

每个rpm软件包都包含一个二进制文件,其中包含了软件的安装脚本、文件列表、元数据和其他必要的信息。

以下是rpm软件包的基本结构和描述:包文件名:rpm软件包的文件名通常具有以下格式:package-name-version-release.architecture.rpm。

其中,各部分含义如下:•package-name:软件包的名称。

•version:软件包的版本号。

•release:软件包的发布号,通常用于表示软件包的修订版本。

•architecture:软件包的目标体系结构,例如x86_64、i386等。

软件包元数据:rpm软件包包含了有关软件包的元数据,包括软件名称、版本、作者、描述、许可证信息等。

安装脚本:rpm软件包通常包含一个安装脚本,用于指导软件包的安装、配置和卸载。

这个脚本可以包括预安装、安装和卸载操作。

文件列表:rpm软件包包含了软件包中包含的文件列表,包括二进制文件、库文件、配置文件等。

文件列表还包括文件的权限、所有者和组信息。

依赖关系:rpm软件包可以包含对其他软件包的依赖关系,以确保安装和运行所需的其他软件包已安装。

脚本和触发器:rpm软件包可以包含用于在软件包安装、升级或卸载时执行的脚本和触发器。

这些脚本可以用于执行额外的配置、日志记录、服务启动/停止等任务。

数字签名:rpm软件包可以使用数字签名来验证软件包的完整性和来源,以确保软件包没有被篡改。

rpm软件包的创建和管理通常使用rpm命令行工具进行。

您可以使用rpm命令来安装、升级、查询和卸载软件包,以及查看软件包的详细信息。

要创建自己的rpm软件包,您需要遵循rpm软件包创建规范,包括创建.spec文件来定义软件包的详细信息和文件结构。

rpm包制作流程

rpm包制作流程

制作RPM包需要按照以下步骤进行:
1. 准备源代码:首先,你需要有要打包的源代码。

这可以是已经编译好的二进制文件,也可以是未编译的源代码。

2. 创建存档文件:使用tar命令将源代码打包成存档文件,通常使用.tar.gz或.zip格式。

例如,使用以下命令将源代码打包成名为myapp.tar.gz的存档文件:`tar -czvf myapp.tar.gz`
3. 创建安装脚本(spec文件):RPM软件包的核心是spec文件,它描述了软件包的名称、版本、依赖关系、安装过程、依赖包等信息。

spec文件使用一种特殊的文本格式编写。

你可以使用文本编辑器或专门的工具创建spec文件。

4. 准备文件:将存档文件和spec文件复制到适合打包的目录中。

通常,你需要进入该目录,并使用yum或dnf等包管理器创建一个临时存储库来安装软件包中的软件。

5. 使用rpmbuild命令构建软件包:打开终端,并进入包含spec文件的目录。

运行`rpmbuild -ba`命令,并指定spec文件的名称。

这将开始构建软件包,并将结果保存在当前目录下的SPE文件和相应的RPM包文件。

6. 安装生成的RPM包:可以使用`rpm -ivh`命令将生成的RPM 包安装到系统中。

请注意,RPM包制作需要一定的系统管理和软件构建知识。

如果你不熟悉这些步骤,建议参考相关的文档或教程,或者寻求专业人士的帮助。

rpm的工作原理和作业过程

rpm的工作原理和作业过程

RPM(Red Hat Package Manager)是Red Hat发行版中使用的包管理工具,它用于安装、卸载、更新和查询已安装的软件包。

RPM使用二进制包进行软件分发,这些包包含了预编译的程序和相关的配置文件。

以下是对RPM工作原理和作业过程的详细介绍:1. 打包:RPM使用.spec文件来描述软件包的元数据,如软件包名称、版本、描述等。

开发人员使用rpmbuild工具根据源码和.spec 文件构建RPM包。

RPM包包含了预编译的程序和相关的配置文件,以便在目标系统上安装。

2. 安装:要安装一个RPM包,用户可以使用rpm命令或者通过图形界面工具(如Yum或DNF)进行安装。

RPM会检查系统中的依赖关系,确保所有必需的软件包都已安装。

然后,RPM会将软件包文件复制到目标系统上,并执行安装脚本以完成安装过程。

3. 卸载:要卸载一个RPM包,用户可以使用rpm命令或者通过图形界面工具进行卸载。

RPM会执行卸载脚本,删除软件包文件,并处理任何依赖关系。

4. 查询:用户可以使用rpm命令或者通过图形界面工具查询已安装或可用的软件包信息。

例如,可以查询软件包的详细描述、版本号、安装状态等。

5. 验证:RPM提供了验证机制,以确保软件包的完整性和真实性。

通过使用数字签名,RPM可以验证软件包的来源和完整性,防止篡改。

6. 依赖管理:RPM能够自动处理软件包的依赖关系。

当安装或卸载一个软件包时,RPM会检查该软件包所依赖的其他软件包是否已安装,并自动处理依赖关系,以确保系统的正常运行。

7. 软件仓库管理:RPM支持多个软件仓库的管理,以便用户可以从多个源获取软件包。

图形界面工具如Yum或DNF提供了方便的界面来管理软件仓库,包括添加、删除或配置仓库。

8. 安全性:RPM本身不提供安全性功能,但它是基于Linux操作系统的安全机制之上的。

Linux操作系统提供了用户权限管理、文件系统权限和防火墙等安全机制,以确保系统的安全性和隔离性。

RPM包rpmbuild SPEC文件深度说明

RPM包rpmbuild SPEC文件深度说明

RPM包rpmbuild SPEC文件深度说明一、编写spec脚本rpm建包的原理其实并不复杂,可以理解为按照标准的格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。

实际过程中,最关键的地方,是要清楚虚拟路径的位置,以及宏的定义。

二、关键字spec脚本包括很多关键字,主要有:引用Name: 软件包的名称,后面可使用%{name}的方式引用Summary: 软件包的内容概要Version:软件的实际版本号,例如:1.0.1等,后面可使用%{version}引用Release:发布序列号,例如:1linuxing等,标明第几次打包,后面可使用%{release}引用Group: 软件分组,建议使用标准分组License: 软件授权方式,通常就是GPLSource: 源代码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用BuildRoot: 这个是安装或编译时使用的“虚拟目录”,考虑到多用户的环境,一般定义为:%{_tmppath}/%{name}-%{version}-%{release}-root或%{_tmppath}/%{name}-%{version}-%{release}-buildroot-%(%{__id_u} -n}该参数非常重要,因为在生成rpm的过程中,执行make install时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作。

后面可使用$RPM_BUILD_ROOT 方式引用。

URL:软件的主页Vendor: 发行商或打包组织的信息,例如RedFlagCo,LtdDisstribution:发行版标识Patch:补丁源码,可使用Patch1、Patch2等标识多个补丁,使用%patch0或%{patch0}引用Prefix: %{_prefix} 这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。

RPM管理实验报告2

RPM管理实验报告2

实验项目名称:RPM管理学号:上机实践日期:2011-10-31实验项目编号:五组号:上机实践时间: 2 学时一、目的(本次实验所涉及并要求掌握的知识点)1、学习掌握用RPM、SRPM方式安装软件包;2、掌握软件包的安装方式和管理。

二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图)实验内容1)使用wget的方式下载linuxqq的rpm包,并安装测试。

2)使用SRPM方式安装pidgin最新版本,安装并测试通过pidgin上QQ。

3)填写实验报告单,下周实验课前传到服务器上,实验报告单的文件名格式为“10.31-xxx实验报告”,xxx为自己的名字三、实验使用环境(本次实验所使用的平台和相关软件)VMware、Red Hat Enterprise Linux 5四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)1、使用wget的方式下载linuxqq的rpm包,并安装测试。

1)使用wget的方式下载linuxqq的rpm包2)安装linuxqq的rpm包3)安装好后,成功登陆QQ1)在网站上找到pidgin的源代码包的地址,使用wget的方式下载2)将下载好的安装包用RPM方式安装3)进入代码包的目录,用pidgin.spec生成代码包,发现pidgin.spec文件有错4)在第二步RPM方式安装src时在目录/usr/src/redhat/SOURCES下有一个pidgin的压缩包5)运行命令tar –jxvf pidgin-2.10.0.tar.bz2,解压生成的pidgin-2.10.0文件也有pidgin.spec文件6)重新生成代码包,发现需要依赖包7)下载所需的依赖包,逐个安装8)在前面安装pidgin-2.7.9时知道需要Tk development 头文件,安装个tk包9)依赖包安装好后,生成代码包开始:检测安装环境GLIB版本太低在/pub/glib/2.16中下载glib-2.16.0.tar.bz2压缩包tar –jxvf glib-2.16.0.tar.bz2cd ./glib-2.16.0comfigure –prefix=/usrmakemake install10)又有新的错误,所以我修改pidgin-2.7.9的pidgin.spec文件,在重新运行命令rpmbuild –ba pidgin.spec结束:在/use/src/redhat/RPMS/i386目录下生成多个代码包11)安装代码包12)安装好后,pidgin-2.10.0没有QQ协议五、实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)1、进行编译时所需要的依赖软件包要先从光盘查找,有些所需要的依赖软件包又有依赖包,而那些依赖包一些原本系统就已安装好,如果一些依赖包的版本型号不同就会冲突,从网上找的安装包版本容易产生冲突呢;2、依赖包装好后,进行编译会出现Tk development header找不到,检测安装环境会通不过,再安装tk-devel包就可以解决了;3、安装好pidgin-2.10.0后没有QQ协议,有上网查找一下解决的方法,就是下载一个libqq-pidgin的协议包安装,但还是没有像网上说的解决问题。

RPM建包原理

RPM建包原理

RPM 建包原理为什么要打包?制作 rpm 不仅仅是打包,更可以解决菜单创建、打补钉、完成大量预配置、与其他软件包互动等操作。

使用源代码安装要求用户了解基本的编译过程、能够应付各种不能编译的意外、必须自己完成抽象的配置、甚至懂得软件开发,能够自己打补钉,……对非计算机专业的用户而言简直就是天方夜谭。

这是把软件开发的最后一步抛给了用 户,作为发行版,这是极不负责任的!也是不现实的,除非用 lfs,但那是一本菜谱,不是真正的发行版。

软件作者发布源代码是正确的,负责的作者一般都同时提供 rpm 和 deb 包以及它们的源代码包。

除非他们不会制作。

愿意使用什么,那是个人的自由,但对外就不能只想到自己。

GNU 精神是一种公益精神,没有奉献精神,在自由软件领域是要遭唾弃的!直 接使用其他发行版的 rpm 常常是不行的。

不知道大家看没看“恼人的依赖关系”这个帖子。

可以在技术支持区搜索一下。

任何两个发行版本在二进制上都是不能兼容的!他们实际是不同的操 作系统。

不仅使用的库文件不同,配置也迥异。

特别是同一个发行版的不同版本更不兼容。

任何包都必须在本地重新编译,而且不一定通得过,因为还有 spec宏的兼容问题!如果要在别的发行版上使用,必须用源码编译,这是常识。

考虑文件布局和配置问题,有时直接编译也是不够的,必须修改 spec,甚至自己打补丁。

如何创建 rpm 包?rpm 建包原理其实不复杂。

写 spec 相当于一种脚本编程,主要是在 spec 里提供一些软件相关信息,以及安装、卸载前后要执行的脚本,然后展开压缩的源代码包,打上补丁,执行编译,然后利用 make install 可以重新指定安装目的地的特性,把编译好的文件安装到指定的虚拟根目录下的指定位置里,一般是虚拟的 /usr 里,然后把这些目录、信息和脚本打成一个压缩包,即 rpm 包。

同时可选地生成源码包 src.rpm。

当然有很多具体细节问题。

您应该首先阅读软件的 readme 和 INSTALL 文件。

修改rpm中的文件重新打包

修改rpm中的文件重新打包

修改rpm中的⽂件重新打包1.安装rpmrebuild 和安装rpmbuildrpmrebuild下载链接:rpmbuild直接⽤yum安装:yum install rpm-build2.配置rpm编译⽬录vi ~/.rpmmacros%_topdir /data/rpmbuild保存。

3.创建⽬录解压rpmrebuild⽂件到/data/rpmbuild中mkdir -p /datamkdir -p /data/rpmbuildmkdir -p /data/rpmbuild/BUILDROOTmkdir -p /data/rpmbuild/SPECScd /data/rpmbuildtar -zxvf rpmrebuild-2.14.tar.gz4.安装准备重新打包的rpmrpm -ivh xxxxxx.rpm5.反编译提取SPEC⽂件#查看rpm安装名称rpm -qa|grep xxxcd /data/rpmbuild#ccc 为查看的rpm安装名称./rpmrebuild.sh -s SPECS/abc.spec ccc6.替换或修改rpm包中的⽂件## 解压原版RPM包rpm2cpio xxxxxx.rpm |cpio -idv根据需求替换修改解压后的⽂件后#bbb是通过命令 rpmbuild /data/rpmbuild/SPECS/abc.spec获取mkdir -p /data/rpmbuild/BUILDROOT/bbb/通过mv命令把rpm解压出来的⽂件修改后都移动到/data/rpmbuild/BUILDROOT/bbb/⽬录下7.修改abc.specvi /data/rpmbuild/SPECS/abc.spec例如:原内容为%attr(0644, root, root) "/usr/lib/123.jar"删除了这个jar 添加了新的456.jar包权限和0644 ⽤户是root ⽤户组也是root删除%attr(0644, root, root) "/usr/lib/123.jar"增加%attr(0644, root, root) "/usr/lib/456.jar"保存aba.spec8.编译RPM包,⽣成的RPM位置在/data/rpmbuild/RPMS/ rpmbuild -ba /data/rpmbuild/SPECS/abc.spec。

rpm包的简单制作及其他操作

rpm包的简单制作及其他操作

rpm包的简单制作及其他操作RPM包的简单制作及其他操作●简单介绍RPM(Redhat Package Manager)是以⼀种数据库记录的⽅式将所需要的套件安装到Linux主机的⼀套管理程序。

它可以使得⽤户可以从源码构建⼀个⼆进制的软件发⾏包和利⽤补丁包给软件打补丁。

因其灵活易⽤,所以很多Linux发⾏版的默认软件安装包都采⽤此打包格式。

●制作RPM包的流程1.准备打包环境在CentOS系统下创建rpmbuild的⼯作⽬录:~/rpmbuild/SOURCES~/rpmbuild/SPECS~/rpmbuild/BUILD~/rpmbuild/RPMS~/rpmbuild/BUILDROOT~/rpmbuild/SRPMS如果你的⽤户⽬录主⽬录下没有类似⽬录结构,你可以通过⼀个⼯具软件来⾃动配置和⽣成,如下:#yum install rpmdevtools运⾏⾃动配置命令⾃动⽣成如上⽬录,并配置⼀些必要操作。

#rpmdev-setuptreerpmdev-setuptree命令默认将再当前⽤户主⽬录下创建⼀个RPM构建根⽬录结构,如果需要改变默认位置,可以修改配置⽂件:~/.rpmmacros中变量_topdir对应的值即可。

如将rpmbuild⽬录配置到/home⽬录下:echo …%_topdir %(echo $HOME) /rpmbuild?>~/.rpmmacrosrpmbuild⼯作⽬录功能简介:2.SPEC⽂档的撰写是制作RPM包的核⼼,也是最难的⼀步。

制作RPM包就是根据SPEC⽂件⾥⾯的配置信息来构建RPM包。

SPEC⽂档分为如下⼏个部分:1)SPEC⽂档的头部Name: myapp <===软件包的名字(后⾯会⽤到)Version: 0.1.0 <===软件包的版本(后⾯会⽤到)Release: 1%{?dist} <===发布序号Summary: my first rpm <===软件包的摘要信息Group: <===软件包的安装分类,参见/usr/share/doc/rpm-4.x.x/GROUPS这个⽂件License: GPL <===软件的授权⽅式URL: <===这⾥本来写源码包的下载路径或者⾃⼰的博客地址或者公司⽹址之类Source0: %{name}-%{version}.tar.gz <===源代码包的名称(默认时rpmbuid回到SOURCES⽬录中去找),这⾥的name和version就是前两⾏定义的值。

rpm的用法详解

rpm的用法详解

rpm的⽤法详解RPM是RedHat Package Manager(RedHat软件包管理⼯具)类似Windows⾥⾯的“添加/删除程序”rpm 执⾏安装包⼆进制包(Binary)以及源代码包(Source)两种。

⼆进制包可以直接安装在计算机中,⽽源代码包将会由RPM⾃动编译、安装。

源代码包经常以src.rpm作为后缀名。

常⽤命令组合:-ivh:安装显⽰安装进度--install--verbose--hash-Uvh:升级软件包--Update;-qpl:列出RPM软件包内的⽂件信息[Query Package list];-qpi:列出RPM软件包的描述信息[Query Package install package(s)];-qf:查找指定⽂件属于哪个RPM软件包[Query File];-Va:校验所有的RPM软件包,查找丢失的⽂件[View Lost];-e:删除包rpm -q samba //查询程序是否安装rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路径安装并显⽰进度rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安装⽬录rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm //⽤来检查依赖关系;并不是真正的安装;rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降级为旧版本rpm -qa | grep httpd #[搜索指定rpm包是否安装]--all搜索*httpd*rpm -ql httpd #[搜索rpm包]--list所有⽂件安装⽬录rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]--query--package--install package信息rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--filerpm -qpR file.rpm #[查看包]依赖关系rpm2cpio file.rpm |cpio -div #[抽出⽂件]rpm -ivh file.rpm #[安装新的rpm]--install--verbose--hashrpm -ivhrpm -Uvh file.rpm #[升级⼀个rpm]--upgraderpm -e file.rpm #[删除⼀个rpm包]--erase常⽤参数:Install/Upgrade/Erase options:-i, --install install package(s)-v, --verbose provide more detailed output-h, --hash print hash marks as package installs (good with -v)-e, --erase erase (uninstall) package-U, --upgrade=<packagefile>+ upgrade package(s)--replacepkge ⽆论软件包是否已被安装,都强⾏安装软件包--test 安装测试,并不实际安装--nodeps 忽略软件包的依赖关系强⾏安装--force 忽略软件包及⽂件的冲突Query options (with -q or --query):-a, --all query/verify all packages-p, --package query/verify a package file-l, --list list files in package-d, --docfiles list all documentation files-f, --file query/verify package(s) owning fileRPM源代码包装安装.src.rpm结尾的⽂件,这些⽂件是由软件的源代码包装⽽成的,⽤户要安装这类RPM软件包,必须使⽤命令:rpm --recompile vim-4.6-4.src.rpm #这个命令会把源代码解包并编译、安装它,如果⽤户使⽤命令:rpm --rebuild vim-4.6-4.src.rpm #在安装完成后,还会把编译⽣成的可执⾏⽂件重新包装成i386.rpm的RPM软件包。

Pyinstaller利用spec文件打包的使用模板

Pyinstaller利用spec文件打包的使用模板

Pyinstaller利⽤spec⽂件打包的使⽤模板pyinstaller打包使⽤pyqt5开发软件,当项⽬越来越⼤,引⽤的资源越来越多时,那么使⽤pyinstaller进⾏打包,如果不利⽤spec⽂件,是很难满⾜打包需求的。

spec⽂件,其实你在使⽤ pyinstaller main.py打包时,也是会⾃动⽣成的,叫main.spec。

不过,如果你想把⾃⼰的资源⽂件⼀起打进包去,则需要对spec⽂件进⾏⼀些编辑,然后使⽤pyinstaller main.spec即可打包完成。

本⽂主要就是列举下pyinstaller利⽤spec⽂件进⾏打包的⼏个使⽤模板,以供⼤家参考使⽤。

⾄于内涵原理,本⼈时间有限,也没深⼊研究,⼤家根据⾃⼰情况去探索吧。

【如下代码,完全复制,直接运⾏,即可使⽤】【注1:模板中的相关路径和⽂件名称,当然需要根据⾃⼰的情况对应修改了】【注2:如果你的spec⽂件叫main.spec的话,打包命令便是 pyinstaller main.spec】【注3:当项⽬越来越⼤时,免安装绿⾊⽂件夹在软件启动速度上,⽐单个可执⾏⽂件,要快!**】模式⼀:使⽤spec⽂件,打成【单个可执⾏⽂件】# -*- mode: python -*-block_cipher = Nonea = Analysis(['main.py'],pathex=['D:\\PythonProject\\mysoft'],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)#######!!!注意点1:加载⾃⼰的资源⽂件#####################def extra_datas(mydir):def rec_glob(p, files):import osimport globfor d in glob.glob(p):if os.path.isfile(d):files.append(d)rec_glob("%s/*" % d, files)files = []rec_glob("%s/*" % mydir, files)extra_datas = []for f in files:extra_datas.append((f, f, 'DATA'))return extra_datas# append the 'Resources' dira.datas += extra_datas('Resources') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Reports') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Drivers') ###这⾥是⾃⼰的资源⽂件夹################################################pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe = EXE(pyz,a.scripts,a.binaries, ###!!!注意点2a.zipfiles, ###!!!注意点2a.datas, ###!!!注意点2[],exclude_binaries=False, ###!!!注意点3:这⾥是Falsename='mysoft',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,icon='d:\\mysoft.ico')模式⼆:使⽤spec ⽂件,打成【免安装绿⾊⽂件夹】# -*- mode: python -*-block_cipher = Nonea = Analysis(['main.py'],pathex=['D:\\PythonProject\\mysoft'],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)#######!!!注意点1:加载⾃⼰的资源⽂件##################### def extra_datas(mydir):def rec_glob(p, files):def rec_glob(p, files):import osimport globfor d in glob.glob(p):if os.path.isfile(d):files.append(d)rec_glob("%s/*" % d, files)files = []rec_glob("%s/*" % mydir, files)extra_datas = []for f in files:extra_datas.append((f, f, 'DATA'))return extra_datas# append the 'Resources' dira.datas += extra_datas('Resources') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Reports') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Drivers') ###这⾥是⾃⼰的资源⽂件夹################################################pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe = EXE(pyz,a.scripts,[],exclude_binaries=True, ###!!!注意点3:这⾥是Truename='mysoft',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,icon='d:\\mysoft.ico')coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name='mysoft')模式三:使⽤spec ⽂件,同时打出【单个可执⾏⽂件】和【免安装绿⾊⽂件夹】# -*- mode: python -*-block_cipher = Nonea = Analysis(['main.py'],pathex=['D:\\PythonProject\\mysoft'],pathex=['D:\\PythonProject\\mysoft'],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)#######!!!注意点1:加载⾃⼰的资源⽂件##################### def extra_datas(mydir):def rec_glob(p, files):import osimport globfor d in glob.glob(p):if os.path.isfile(d):files.append(d)rec_glob("%s/*" % d, files)files = []rec_glob("%s/*" % mydir, files)extra_datas = []for f in files:extra_datas.append((f, f, 'DATA'))return extra_datas# append the 'Resources' dira.datas += extra_datas('Resources') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Reports') ###这⾥是⾃⼰的资源⽂件夹a.datas += extra_datas('Drivers') ###这⾥是⾃⼰的资源⽂件夹################################################pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe1 = EXE(pyz,a.scripts,a.binaries, ###!!!注意点2a.zipfiles, ###!!!注意点2a.datas, ###!!!注意点2[],exclude_binaries=False, ###!!!注意点3:这⾥是Falsename='mysoft',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,icon='d:\\mysoft.ico')icon='d:\\mysoft.ico')exe2 = EXE(pyz,a.scripts,[],exclude_binaries=True, ###!!!注意点3:这⾥是True name='mysoft',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,icon='d:\\mysoft.ico')coll = COLLECT(exe2,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name='mysoft')。

RPM打包入门教程

RPM打包入门教程

RPM打包教程内容目录1.Linux一般软件的安装 (1)2.Linux包类型 (1)3.RPM介绍 (2)3.1.例子 (2)3.2格式 (2)3.3rpm支持的架构 (2)4.RPM使用 (3)4.1RPM的运用 (3)4.2YUM的运用 (4)5.RPM打包 (4)5.1预备工作 (4)5.1.1预装软件 (4)5.1.2建立文件夹树 (4)5.2.创建RPM Spec文件 (5)5.2.1导言 (5)5.2.2 %description区段 (5)5.2.3 %prep 区段 (5)5.2.4 %build区段 (5)5.2.5 %install区段 (6)5.2.6 %clean区段 (6)5.2.7 %files区段 (6)5.2.8 %changelog区段 (6)5.3 调用rpmbuild命令编译rpm软件包 (7)6. Fedora哦也,酷毙了~ (7)1.Linux一般软件的安装./cofiguremake && make install2.Linux包类型软件包简单的说就是像Windows下.exe或者.msi的样子的安装包。

可以将编译好的二进制文件,源代码,文档等以特定格式压缩。

使用软件包管理工具可以直接安装。

RPM ——RPM(Redhat Packager Manager),最初是Redhat公司引进在RedhatLinux上的,是以自由软件许可证发布的软件。

主要使用的发行版有:RHEL,Fedora,CentOS,Mandriva,openSUSE,国内的Redflag,Qomo,还有一个值得关注的是就快出现的Meego也是用RPM的。

They say they like “yum”Deb——也有不使用RPM管理的发行版,那就是所谓的Debian系,主要是Debian,Ubuntu,Knoppix。

Portage——是Gentoo引入的,类似与FreeBSD中的一个port的一个管理。

记录一次学习制作二进制rpm包的过程

记录一次学习制作二进制rpm包的过程

记录⼀次学习制作⼆进制rpm包的过程执⾏下⾯的⼏条命令,安装创建rpm-build 及制作⽬录yum install rpm-buiildyum install rpmdevtoolsrpmdev-setuptree在当前⽤户⽬录下⽣成了如下⽬录结构source 是打包资源路径SPECS 是编译⼆进制⽂件路径RPMS是编译⽣成的⼆进制包路径SRPMS 是⽣成源码包的路径先把我想要打包RPM的⽂件或者应⽤搞成⼀个 tar.gz 包,注意⼀下tar.gz的名字需要跟最终⽣成的rpm包名字⼀致。

放到Build⽬录下 rpm包的命名应该是name-version-release.架构.npm然后cd SPECS⽬录创建⼀个 igixnpm.spec ⽂件添加如下内容,做⼀个⼆进制安装Summary: test setup programsName:testVersion: 1.0.0Release: 1License: GPLBuildRoot: %_topdir/BUILDROOTGroup: Applications/System%descriptionthis is a test server%prep #预安装操作%build #编译操作%install #安装步骤mkdir -p $RPM_BUILD_ROOT/root/test/cd $RPM_BUILD_DIRtar xzvf ../BUILD/test -1.0.0-1.x86_64.tar.gzcp -R ../BUILD/test -1.0.0-1.x86_64/* $RPM_BUILD_ROOT/root/test/%files #说明安装过程产⽣的⽂件夹和⽂件,为后续卸载做准备(⽬前我是这么理解的,后续学习发现不对再回来改吧)/root/test/%post #rpm 安装完后执⾏的操作cp /root/test/startup-linux.sh /root/test/test.sh%preun #卸载前操作%postun #卸载后操作rm -rf /root/testOK,现在我们去编译⼀个rpm包。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 + umask 022
7 + cd /usr/src/dist/BUILD
生成的文件会在刚才建立的RPM目录下存在。
2)只生成src格式的rpm包
rpmbuild -bs xxx.spec
生成的文件会在刚才建立的SRPM目录下存在。
3) 只需要生成完整的源文件
rpmbuild -bp xxx.spec
二.典型spec文件分析
通过第一部分的介绍,我们对软件包的管理及spec文件的一些细节应该掌控的差不多了,接下来通过分析kaffeine.spec(kaffeine是linux平台下的媒体播放器)文件来让读者朋友实践一回spec文件的规范和书写。
Kaffeine.spec文件内容如下:
%define debug_package %
1) 只生成二进制格式的rpm包
rpmbuild -bb xxx.spec
用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号)
1 Executing: %prep
2 + umask 022
3 + cd /usr/src/dist/BUILD
4 + exit 0
5 Executing: %build
(3)build段
本段是建立段,所要执行的命令为生成软件包服务,如make 命令。
(4)%install段
本段是安装段,其中的命令在安装软件包时将执行,如make install命令。
(5)%files段
本段是文件段,用于定义软件包所包含的文件,分为三类--说明文件(doc),设置文件(config)及执行程式,还可定义文件存取权限,拥有者及组别。
4.打包
如果想发布rpm格式的源码包或是二进制包,就要使用rpmbuild工具(rpm最新打包工具)。如果我们已根据本地源码包的成功编译安装而写了 spec文件(该文件要以.spec结束),那我们就能建立一个打包环境,也就是目录树的建立,一般是在/usr/src/redhat/目录下建立5 个目录。他门分别是BUILD、SOURCE、SPEC、SRPM、RPM。其中BUILD目录用来存放打包过程中的源文件,SOURCE用来存放打包是 要用到的源文件和patch,SPEC用来存放spec文件,SRPM、RPM分别存放打包生成的rpm格式的源文件和二进制文件。当然我们能根据需要来 选用不同的参数打包文件,笔者总结如下3条。
来获的。
2.RPM工具功能
1) 安装
rpm -i ( or --install) options file1.rpm ... fileN.rpm 通过rpm -ivh能把rpm软件包安装到系统中,当然也能使用不同的参数选项,笔者建议使用-ivh ,使用该选项能解决大部分rpm软件包的安装,至于周详的参数说明可用查看rpm的man 文件。
RPM拥有功能强大的查询选项。我们能搜索数据库来查询软件包或文件。也能查出某个文件属于哪个软件包或出自哪儿。RPM软件包中的文件是以压缩格式存放的,拥有一个制定的二进制头文件,其中包含有关包和内容的信息,能让我们对单个软件包的查询简便又快速。
RPM另一个强大的功能是进行软件包的验证。如果我们担心误删了某个软件包中的某个文件,我们就能对他进行验证。所有非正常现象将会被通知。如果需要的话还能重新安装该软件包。在重新安装过程中,所有被修改过的设置文件将被保留。
2 )删除
rpm -e ( or --erase) options pkg1 ... pkgN 如果某个软件包你再也不想使用了,那就用以上这个命令完全的把你指定的rpm软件包清除掉把。
3 )升级
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 由于开源软件更新速度快,用户当然要使用最新版本的软件包,此时最合适的就是rpm升级功能,当然最最佳的参数选项就是-Uvh。
Source0: kaffeine-0.4.3.tar.bz2
Source1: logo.png
Source2: icon.tgz
Source3: kaffeine.desktop
Source4: codecs.tgz
Patch: kaffeine-0.4.3-fix-hide-crash.patch
Applications/Multimedia(应用/多媒体)
Applications/Productivity (应用/产品)
Applications/Publishing(应用/印刷)
Applications/System(应用/系统)
Applications/Text (应用/文本)
4 )查询
rpm -q ( or --query) options 实际上我们通常使用rpm工具最多的功能还是他的查询功能,比如查看软件包的版本、依赖关系等软件包的周详说明都要用到。最有用的参数选项是-qpi。
5 )校验已安装的软件包
rpm -V ( or --verify, or -y) options 一般我们可用通过该命令来验证已安装软件包,根据笔者的经验该命令一般没什么用途,只做一个了解就ok了。
RPM打包技术和典型SPEC文件分析
本文分为两部分,第一部分阐述了 rpm 工具的功能及 rpmbuild 工具,周详的介绍了 spec文件的书写规则及关键部分,第二部分对一个典型的 spec 文件做了周详的分析。
为了方便朋友们查看,我找了中文的rpmbuild 的MAN 附在最后
一 、rpm 介绍
软件包周详说明,可写在多个行上。
(2)%prep段
这个段是预处理段,通常用来执行一些解开源程式包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段相同,除了能执行RPM所定义的宏命令(以%开头)以外,还能执行SHELL命令,命令能有非常多行,如我们常写的tar解包命令。
System Environment/Base(系统环境/基础)
System Environment/Daemons (系统环境/守护)
System Environment/Kernel (系统环境/内核)
System Environment/Libraries (系统环境/函数库)
System Environment/Shells (系统环境/接口)
(6)%changelog段
本段是修改日志段。你能将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。每一个修改日志都有这样一种格式:第一行是:* 星期月日 年修改人电子信箱。其中:星期、月份均用英文形式的前3个字母,用中文会报错。接下来的行写的是修改了什么地方,可写多行。一般以减号开始,便于后续的查 阅。
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。
Vendor:
软件研发者的名字。
Copyright:
软件包所采用的版权规则。具体有:GPL(免费软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的研发都写GPL。
Development/Debuggers (研发/调试器)
Development/Languages (研发/语言)
Development/Libraries (研发/函数库)
Development/System (研发/系统)
Development/Tools (研发/工具)
Documentation (文件)
3.spec文件规范
能熟练掌控以上命令及部分参数含义,管理日常的rpm软件包就不成问题了。然而随着Linux风靡全球,越来越多的研发者喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎样制作的呢?对大多数Linux研发工程师来说是比较陌生的。
其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件 (SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、及软件包所要包 含的文件列表等等。
Name: kaffeine
Version: 0.4.3
Release: 25
Summary: A xine-based Media Player for KDE
Group: Applications/Multimedia
License: GPL
M全称是 Red Hat Package Manager(Red Hat包管理器)。几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。
RPM 是个开放的软件包管理系统。他工作于Red Hat Linux及其他Linux和UNIX 系统,可被所有人使用。redhat软件公司鼓励其他厂商来了解RPM并在自己的产品中使用他。RPM的发布基于GPL协议。对于最终用户来说,使用 RPM所提供的功能来维护系统是比较容易和轻松的。安装、卸载和升级RPM软件包只需一条命令就能搞定。RPM维护了一个所有已安装的软件包和文件的数据 库,能让用户进行查询和验证工作。在软件包升级过程中,RPM会对设置文件进行特别处理,绝对不会丢失以往的制定信息。对于程式员RPM能让我们连同软件 的原始码打包成原始码和二进制软件包供最终用户使用。
源文件存在目录BUILD下。
读者朋友可能对这个命令不太明白,这个命令的作用就是把tar包解开然后把所有的补丁文件合并而生成一个完整的具最新功能的源文件。
4) 完全打包
相关文档
最新文档