`
zhanghw0917
  • 浏览: 185691 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

linux rpm 包制作 - 使用 rpmbuild

阅读更多
一、安装 rpmbuild

// for fedora linux

yum install rpmbuild -y

// for ubuntu

apt-get install rpmbuild

二、rpm specification file

spec文件规范
能熟练掌握以上命令以及部分参数含义,管理日常的rpm软件包就不成问题了。然而随着Linux风靡全球,越来越多的开发者喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎样制作的呢?对大多数Linux开发工程师来说是比较陌生的。

其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件 (SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要 包含的文件列表等等。

描述文件说明如下:

(1) 文件头

一般的spec文件头包含以下几个域:

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

Name:
软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。

Version:
软件版本号。仅当软件包比以前有较大改变时才增加版本号。

Release:
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。

Vendor:
软件开发者的名字。

Copyright:
软件包所采用的版权规则。具体有:GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的开发都写GPL。

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硬件支持)

Source:
源程序软件包的名字。如 stardict-2.0.tar.gz。

%description:
软件包详细说明,可写在多个行上。

(2)%prep段

这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,除 了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行,如我们常写的tar解包命令。

(3)build段

本段是建立段,所要执行的命令为生成软件包服务,如make 命令。

(4)%install段

本段是安装段,其中的命令在安装软件包时将执行,如make install命令。

(5)%files段

本段是文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。

(6)%changelog段

本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。其中:星期、月份均用英文形式的前3个字母,用中文会报错。接下来的行写的是修改了什么地方,可写多行。一般以减号开始,便于后续的查阅。

三、源代码打包

将源代码打包,如 stardict-2.0.tar.gz,并将文件放到spec文件Source段所描述的路径下,通常为/usr/src/redhat/SOURCES/目录下(不同的Linux发布版本略有不同,如OpenSUSE为 /usr/src/packages/SOURCES/)

四、rpm打包

rpmbuild -ba ‘spec文件路径’

(rpmbuild常用参数: -bb 只编译二进制rpm包 -bs 只编译源码rpm包 -ba 同时编译二进制和源码rpm包)

build完后,可以在/usr/src/redhat/RPMS/下找到二进制rpm包,rpm包按照其对应的cpu体系结构分类,通常在/usr/src/redhat/RPMS/i386目录下

/usr/src/redhat/SRPMS/下找到源码rpm包,此时由于是源代码,所以无须按体系结构分类。



参考文献:

http://www.uplinux.com/www/dev/02/317.shtml
分享到:
评论

相关推荐

    ARM架构和X86_64架构rpmbuild制作openssh和openssl的rpm包

    本文将深入探讨如何使用`rpmbuild`工具在ARM架构和X86_64架构下分别构建`openssh`和`openssl`的RPM软件包。 首先,让我们了解一下`rpmbuild`。`rpmbuild`是RPM打包系统的一部分,用于创建符合RPM规范的软件包。RPM...

    用openssh9.8源码包,制作rpm包

    在基于RPM的Linux发行版(如Fedora、CentOS、RHEL等)上,你可以使用包管理器安装它们: bash sudo dnf install rpm-build # 对于Fedora和较新的CentOS/RHEL版本 # 或者 sudo yum install rpm-build # 对于较旧的...

    Linux下RPM打包制作过程

    Linux下的RPM打包制作流程是将软件源代码转化为可供Linux系统安装的RPM包的过程,这一过程涉及到多个步骤和配置文件。RPM(Red Hat Package Manager)是一种广泛应用于Linux发行版的软件包管理器,它使得软件的安装...

    Linux rpm包制作.docx

    通过掌握RPM包的制作方法,你可以更好地定制和控制软件在Linux系统上的部署和更新,这对于系统管理员和开发人员来说是一项非常重要的技能。同时,这也为软件的分发和维护提供了标准化的流程,确保了不同环境下的软件...

    hello world rpm包制作的例子

    制作RPM包通常需要用到`rpmbuild`工具。它会根据`spec`文件来构建RPM。`spec`文件是RPM包的核心,定义了软件的元数据、依赖关系、安装步骤等。 3. **`spec`文件详解** - `%name`: 软件的名称,如`hellow`. - `%...

    gradle制作rpm包

    RPM 包的制作过程严格按照 SPEC 文件规范的执行,然后通过 rpmbuild 命令来解析 SPEC 文件生成对应的 RPM 包。制作 RPM 的工厂包括四个实体生产车间,也就是目录结构如下:rpmfactory/{SOURCES,BUILD,SPECS,RPMS,...

    利用rpmbuild制作rpm包的总结1

    5. **构建RPM包**:完成SPEC文件的修改后,使用`rpmbuild`命令来构建RPM包: ```bash cd ${HOME}/rpmbuild rpmbuild -ba SPECS/hellorpm.spec ``` 6. **检查生成的RPM包**:构建完成后,可以在`RPMS/x86_64`目录下...

    如何将Nginx源码包制作成RPM包.doc

    总结来说,将Nginx源码包制作成RPM包的过程主要包括:安装`rpm-build`工具,设置`rpmbuild`目录结构,准备源码和spec文件,创建并编辑spec文件,安装依赖,然后使用`rpmbuild`命令生成RPM包。这样做可以使得Nginx...

    mariadb-10.10.3-linux-systemd-x86-64.tar.gz

    MariaDB数据库管理系统,作为MySQL的一个分支,自2009年由MySQL创始人Monty Widenius领导的团队开发以来,已经成为全球广泛使用的开源数据库系统之一。它旨在保持与MySQL的高度兼容性,同时也引入了多项技术创新和...

    rhl rpm打包原理详解

    在IT行业中,RPM(Red Hat Package Manager)是Linux系统中广泛使用的软件包管理器,尤其在基于RHEL(Red Hat Enterprise Linux)的系统中,如Fedora、CentOS等。RPM打包原理详解主要涉及如何创建自己的RPM软件包,...

    httpd2.4.37版本的rpm包

    **Apache HTTP服务器2.4.37 RPM包详解** Apache HTTP服务器是世界上最广泛使用的Web服务器软件,它提供了强大的功能和...对于系统管理员来说,理解RPM包的制作和使用对于维护一个高效、安全的Web服务环境至关重要。

    linux下制作安装rpm包的方法.docx

    4. **构建RPM包**:进入`/usr/src/redhat/SOURCES/`目录,然后使用`rpmbuild`命令来构建RPM包。你可以选择`-bb`选项仅编译成RPM档案,或使用`-ba`选项编译并同时生成RPM和SRPM档案。 **二、安装RPM包** 1. **检查...

    Linux-rpm.zip_rpm

    在Linux和Unix操作系统中,RPM(Red Hat Package Manager)是一种广泛使用的软件包管理器,它使得安装、升级、查询和卸载软件变得极其方便。RPM包制作是开发人员和系统管理员必备的技能之一,因为这允许他们自定义...

    rpm安装包的制作1

    在Linux系统中,完成RPM安装后,会提供`rpmbuild`工具,用于创建RPM包。`rpmbuild`工具会创建一个工作目录结构,包括`BUILD`, `BUILDROOT`, `RPMS`, `SOURCES`, `SPECS`和`SRPMS`等子目录,它们各自有不同的用途。 ...

    kernel RPM包编译文档.docx

    Linux内核编译文档 根据提供的文件信息,本文档旨在...本文档提供了详细的Linux内核编译指南,包括rpmbuild工具的使用、SRPM和SPEC文件的应用、编译Linux内核、修改源代码和制作patch、应用编译好的RPM包等知识点。

    CentOS 7环境下制作的openssh-8.4p1.rpm包

    完成后,使用`rpmbuild -bb SPECFILE`生成RPM包。 在提供的文件列表中,我们看到了几个不同部分的OpenSSH RPM包: - `openssh-debuginfo-8.4p1-1.el7.x86_64.rpm`:包含调试信息,用于定位和解决运行时问题。 - `...

    RPM软件包制作

    首先,要制作RPM包,你需要在你的Linux系统上安装`rpmbuild`工具。对于Fedora、CentOS或Redhat系统,可以使用`yum install rpmbuild -y`命令;而对于Ubuntu系统,应使用`apt-get install rpmbuild`。 接下来,我们...

    RPM包的制作及其他操作

    RPM包是Linux系统中广泛使用的软件包管理格式,尤其在基于Red Hat的系统如CentOS、Fedora中。RPM包的全称是Red Hat Package Manager,它提供了一种标准化的方式来安装、升级、查询、验证和删除软件。RPM包包含了软件...

    Linux下克隆工具-mondo.doc

    建议下载源码包或者 SRPM 包,在需要备份的系统上进行编译安装或者使用 rpmbuild 打成 RPM 包再安装。 使用 Mondo 备份系统的操作步骤如下: 1. 首先挂载需要备份的所有分区,在命令行终端下执行“mondoarchive”...

Global site tag (gtag.js) - Google Analytics