RPM打包软件流程

    技术2022-07-11  79

    RPM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux分发版(distribution)常见的软件包管理器。国产操作系统的中标麒麟同样使用RPM包管理工具。 本文以 hello world 程序为例,介绍RPM软件打包流程,最后总结常用的RPM包安装、查询、卸载等命令。

    1. 环境准备

    1.1 安装RPM打包工具

    准备Linux环境,如CentOS。安装RPM打包工具rpmdevtools:

    yum install rpmdevtools

    1.2 创建RPM打包路径

    RPM打包需要一个标准化的“工作空间”,在此空间下可以完成源码编译、打包、虚拟安装、清理等工作。创建标准化“工作空间”的命令为:

    rpmdev-setuptree

    执行完上述命令就可以在$HOME家目录下看到其创建的rpmbuild文件夹,文件夹下的目录结构为: |-- rpmbuild   |-- BUILD   |-- BUILDROOT   |-- RPMS   |-- SOURCES   |-- SPECS   |-- SRPMS

    文件夹说明:

    目录用途macros中的宏SOURCES存放源码包(如.tar.gz包)和patch补丁%_sourcedirSPECS存放用于生成RPM包的配置文件(.spec)%_specdirBUILD源码包的解压路径,并在该目录下进行编译%_builddirBUILDROOT编译后生成的软件临时安装目录%_buildrootdirRPMS存放生成的RPM包(以.rpm作为后缀)%_rpmdirSRPMS存放生成的源码RPM包(以.src.rpm作为后缀)%_srcrpmdir

    注:SPECS下包含RPM包的配置文件,通过.spec文件控制rpmbuild进行打包,其中的macros会按照一系列预定的规则替换一定的文本模式,macros宏文件的路径位于/usr/lib/rpm/macros中。

    2. RPM打包流程

    环境准备完成后,接下来以 hello world 为例,介绍如何通过源码编译的方式将其生成可执行文件并进行打包、安装、卸载。

    2.1 SOURCE文件夹下准备源码/文件

    在 SOURCE 文件加下创建文件夹 hello-1.0,这里的命名格式一般为 Name-Version ,在该文件夹下创建 hello.c 文件如下

    /* Hello world program*/ #include <stdio.h> int main() { printf("Hello, World\n"); return 0; }

    在 SOURCE 文件夹下将 hello-1.0 文件夹打包为 .tar.gz 格式: tar -zcvf hello-1.0.tar.gz hello-1.0/

    2.2 SPEC文件夹下编辑spec文件

    spec 的英文全称为 specification (规范,说明书),通过 spec 文件控制打包过程,spec 文件命名格式可以为 Name-Version.spec,直接通过 vi 创建 .spec 文件会直接出现待填充控制信息的模板,如果没有则需手动创建文件并填写内容。这里创建并填写的 hello.spec 文件如下:

    Name: hello Version: 1.0 Release: 1%{?dist} Summary: This is Hello world rpm package. Group: Application/Engineering License: GPL Source: %{name}-%{version}.tar.gz
    转载请注明原文地址:https://ipadbbs.8miu.com/read-16760.html
    最新回复(0)