RPM包详解以及如何制作RPM包

news2024/11/18 9:46:14

RPM包简介

  • RPM 全名 RedHat Package Managerment,一开始只是Red Hat Linux的软件包格式,它最初的名字为Red Hat软件包管理程序。从那以后,RPM逐渐称为许多其他Linux发行版所接受的一种软件包格式。Linux标准化规范将RPM作为其官方软件包格式。

RPM的主要优点

  • 使用广泛。许多Linux发行版至少都可以安装RPM软件包,或者将RPM作为它的标准软件包格式。
  • 能够只用一条命令来安装软件包。同样,删除或升级软件包也只需要一条命令。
  • 只需要处理一个文件。一个RPM软件包就保存在一个单独的文件中,这使得在不同系统之间传输软件包变得非常容易。
  • RPM自动处理软件包之间的依赖关系检查。RPM系统包含一个数据库,该数据库中记录了已安装的所有软件包的信息,包括每个软件包所提供的内容以及安装每个软件包的要求。
  • RPM软件包设计为由 “最干净” 的源代码而来,从而可以对它进行重新编译。RPM支持如patch这样的linux工具,可以在编译过程中为软件的源代码打上补丁。

RPM包目录结构

  • BUILD:rpmbuild命令在这个目录中建立软件
  • RPMS:制作完成后的RPM存放目录
  • SOURCES:存放应用程序源文件的目录
  • SPECS:存放SPEC文件的目录
  • SRPMS:rpmbuild命令将在这个目录中放置RPM源代码软件包
  • BUILDROOT:虚拟安装目录,在整个install的过程中临时安装到此目录,把这个目录当做根来使用。所有在这个目录下的文件才是真正的目录文件,最后SPEC文件中有清理阶段,这个目录下的内容将被删除。

SPEC文件介绍

  • RPM包的SPEC文件有许多配置信息,包含:软件基础信息、安装卸载前后执行的脚本、对源码包打补丁、解压、编译、安装等。
  • Name : 软件名称
  • Summary: 软件包的内容
  • Version: 软件版本号
  • Release: 发布序列号,为1表示第一次创建
  • Group: 软件分组,建议使用:Applications/System
  • License: 软件授权方式GPLv2
  • Source: 源码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用
  • BuildRoot: 这个是安装或编译时使用的临时目录,即模拟安装完以后生成的文件目录:%_topdir/BUILDROOT 后面可使用$RPM_BUILD_ROOT 方式引用。
  • URL: 软件的URI
  • Vendor: 打包组织或者人员
  • %description: 软件的详细说明
  • %define: 预定义的变量,例如定义日志路径: _logpath /var/log/weblog
  • %prep: 预备参数,通常为 %setup -q
  • %build: 编译参数 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/……
  • %install: 安装步骤,此时需要指定安装路径,创建编译时自动生成目录,复制配置文件至所对应的目录中
  • %pre: 安装前需要做的任务,如:创建用户
  • %post: 安装后需要做的任务 如:自动启动的任务
  • %preun: 卸载前需要做的任务 如:停止任务
  • %postun: 卸载后需要做的任务 如:删除用户,删除/备份业务数据
  • %clean: 清除上次编译生成的临时文件,就是上文提到的虚拟目录
  • %files: 设置文件属性,包含编译文件需要生成的目录、文件以及分配所对应的权限

制作RPM包

  • 创建目录

    • 创建以下目录结构
      在这里插入图片描述
  • 制作spec文件。

    • 直接在SPECS下创建一个spec文件,无特殊需求可使用以下模板
    •   Name: smallwolf
        Version: 1.0.0
        Release: 1%{?dist}
        Summary: this is small gray wolf
        Buildroot: %{_tmppath}/%{name}-%{version}-root
        License: GPL
        URL: http://www.csdn.net
        Source0: %{name}-%{version}.tar.gz
        
        %description
        This package is small gray wolf
        
        %prep
        %setup -q
        
        
        %install
        rm -rf %{buildroot}
        mkdir -p %{buildroot}/opt/smallwolfres
        cp -r %{_builddir}/smallwolf-1.0.0/opt/smallwolfres/* %{buildroot}/opt/smallwolfres
        
        %post
        mkdir -p /opt/smallwolfres
        chmod 0755 /opt/smallwolfres
        
        %files
        /opt/smallwolfres
        
        %postun
        rm -rf /opt/smallwolf
        echo "clean /opt/smallwolf"
        
        
        %changelog
        * Wed Jul 4 2018 VBird Tsai <vbird@mail.vbird.idv.tw> 0.1
        - Build the program
      
      
  • 制作打包文件

    • 在SOURCES目录下压缩smallwolf-1.0.0目录 tar -zcvf smallwolf-1.0.0.tar.gz smallwolf-1.0.0/
    • 拷贝 SOURCES/smallwolf-1.0.0.tar.gz到rpmbuild/BUILD下
  • rpmbuild目录下执行 rpmbuild -bb SPECS/smallwolf.spec

    • 执行完该命令,如果成功,会在rpmbuild/RPMS/x86_64目录下生成一个rpm后缀的安装包

RPM包安装和卸载

  • 安装
  • rpm -ivh smallwolf-1.0.0-1.el8.x86_64.rpm
  • 安装成功后,在对应目录下就有了我们的程序
    在这里插入图片描述

  • 卸载

  • rpm -e --nodeps smallwolf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gdb调试产生code文件以及遇到的“file format not recognized”问题解决

一、调试 core 文件的配置 1.1 开启core文件 —— ulimit 有时候&#xff0c;服务器程序运行一段时间后会突然崩溃&#xff0c;这并不是我们希望看到的&#xff0c;需要 解决这个问题。只要程序在崩溃的时候有 core 文件产生&#xff0c;就可以使用这个 core 文件 来定位崩溃…

数据结构(王道)——线性表的存储结构之双链表

双链表和单链表的对比 一、从无到有创建一个双链表及其基础操作 带头结点 的双链表 初始化 双链表的后插操作&#xff1a; 从后插可以拓展到按位序插入&#xff0c;和前插操作。 因为双链表的特性&#xff0c;如果按位序插入或者前插操作&#xff0c;只需要找到插入的位置的前…

传统企业的数据管理:如何高效管理分散的数据?

在数字时代&#xff0c;数据管理已经成为一个重要的议题。大多数企业已经意识到数据是他们业务运营的重要组成部分。然而&#xff0c;许多传统企业还在使用过时的数据管理模式&#xff0c;这些模式并不具备高效管理分散数据的能力。随着企业的膨胀和数据规模的逐渐增加&#xf…

AI工程师:未来时代的主流工程师

自从以ChatGPT为主的人工智能&#xff08;AI&#xff09;大模型层出不穷&#xff0c;越来越多人开始意识到AI的潜力&#xff0c;甚至预测“所有行业都将通过AI来进行重塑”&#xff0c;正是基于该原因&#xff0c;各国各企业如火如荼建设AI事业&#xff0c;作为把AI造出来的AI工…

配合LaTex使用的“工具”

先介绍两个工具&#xff0c;比如公式的书写等&#xff0c;会大大提高书写论文的速度。 第一个&#xff1a;Mathpix Snip(生成公式)。官网&#xff1a;https://mathpix.com 【先去官网注册一个账号&#xff08;注册时遇到的问题见文章Mathpix上半部分&#xff09;然后去安装该软…

Python 列表 pop()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 pop函数使用详解 1、按照索引删除元素1.1、正数索引1.2、负数索引1.3、不指定索引…

docker k8s

Docker docker到底与一般的虚拟机有什么不同呢&#xff1f; 我们知道一般的linux系统即GNU/Linux系统包括两个部分&#xff0c;linux系统内核GNU提供的大量自由软件&#xff0c;而centos就是众多GNU/Linux系统中的一个。 虚拟机会在宿主机上虚拟出一个完整的操作系统与宿主机完…

vue+openlayers 点击地图查询geoserver发布的WMS/WMTS图层的信息[矢量(点、线、面)+栅格]

一、基本介绍 网络地图服务 (WMS) 、网络地图切片服务 (WMTS) &#xff0c;根据用户的请求返回相应的地图&#xff08;包括PNG&#xff0c;GIF&#xff0c;JPEG等栅格形式或者是SVG和WEB CGM等矢量形式&#xff09;。 下面是常见的geoserver发布的图层格式&#xff0c;有矢量…

ODX(ISO22901)进阶——Intorduction to ODX

文章目录 前言一、Vehicle Diagnostic是什么?二、Diagnostic Data in ODX(诊断数据在ODX数据库)三、ODX企标概述(ODX Authoring Guidelines)总结前言 今天是2023年7月15日,距离2024年只剩下半年时间。伴随着各地疫情政策逐渐发开,三年的疫情终于迎来了不一样的变化。期…

AI绘画Stable Diffusion实战操作: 62个咒语调教-时尚杂志封面

今天来给大家分享&#xff0c;如何用sd简单的咒语输出好看的图片的教程&#xff0c;今天做的是时尚杂志专题&#xff0c;话不多说直入主题。 还不会StableDiffusion的基本操作&#xff0c;推荐看看这篇保姆级教程&#xff1a; AI绘画&#xff1a;Stable Diffusion 终极炼丹宝…

C++并发编程(1):基本概念、线程管控

学习视频与书籍 学习视频 c11并发与多线程视频课程 学习书籍 我本来打算去图书馆借《C新经典》的&#xff0c;偶然发现这本书&#xff0c;如获至宝 书挺新的&#xff0c;我看译者序是21年10月这本书挺贵的&#xff0c;后面写着139.80&#xff0c;大家还是去图书馆借吧作为基础…

Linux驱动之字符设备驱动框架与示例模板

目录 一、字符设备驱动简介 二、字符设备驱动开发步骤 1.确定设备号 2.定义 file_operations 结构体 3.实现操作函数 4.注册和注销字符设备 5.编译和加载模块 6.用户空间交互&#xff1a; 三、字符设备驱动示例模板 四、字符设备驱动开发总结 一、字符设备驱动简介 字…

未来Mac下载站怎么打不开了

重要公告&#xff1a; 未来软件园因业务需要现更换域名 原域名&#xff1a;Mac.orsoon.com 更为新域名&#xff1a;未来mac下载-Mac软件-mac软件下载-mac软件大全 程序已全面转移&#xff0c;请访问新域名

MySQL中的索引和事务 (数据库系列5)

目录 前言&#xff1a; 1.索引 1.1 索引的概念 1.2索引的作用 1.3索引的使用场景 1.4索引的使用 1.4.1查看索引 1.4.2创建索引 1.4.3删除索引 1.5索引背后的数据结构 1.5.1 B-树 1.5.2 B树 2.事务 2.1事务的概念 2.2数据库事务的四个特性 2.2.1原子性 2.2.2一…

城会玩,Selenium+Docker成功解决这一大难题

01、需求背景 日常测试中会遇到对web应用进行UI自动化的测试场景&#xff0c;一般常用的工具是使用Selenium&#xff0c;一套简单的UI自动化架构如下&#xff1a; 上图即为简单搭建的一套UI自动化测试架构&#xff0c;但 串行执行测试用例&#xff1a; 一台机器只能安装一个…

《英雄联盟》提示丢失D3DCompiler_43.dll的三个解决方法

在我们打开游戏《英雄联盟》的时候&#xff0c;计算机报错提示“由于找不到D3DCompiler_43.dll&#xff0c;无法继续执行此代码”&#xff0c;“D3DCompiler_43.dll丢失”是怎么回事呢&#xff1f;D3DCompiler_43.dll是一个Microsoft DirectX的组件文件&#xff0c;它是用于编译…

博客系统(使用前后端分离)

博客系统 前言一.准备工作1.1 准备好前端文件1.2 设计数据库1.3 编写基本的数据库代码1.4 封装好数据库的连接操作1.5 根据设计的表创建实体类1.6 根据实体类,提供一些简单的增删改查操作 二.博客要实现的功能2.1 博客列表页功能2.2 博客详情页2.3 博客登录页2.4 页面强制登录功…

涵子来信——AI的无限未来——谈谈想法

大家好&#xff1a; 这一次&#xff0c;我想要跟大家讲一讲我对AI的看法和未来的展望&#xff0c;谈谈我的想法。 AI&#xff08;Artificial Intelligence&#xff0c;中文人工智能&#xff09;&#xff0c;是我们生活中处处都可以见到的&#xff0c;小到一个语音助手&#x…

ylb-接口13实名认证

总览&#xff1a; 在api模块下的service包&#xff0c;创建一个充值接口RechargeService&#xff0c;并创建一个&#xff08;根据userID查询它的充值记录&#xff09;方法&#xff1a; package com.bjpowernode.api.service;import com.bjpowernode.api.model.RechargeRecord…

迪赛智慧数——柱状图(多色柱状图):旅行灵感来源

效果图 涉足旅行就是一次睿智的选择&#xff0c;心系未来、永不停步&#xff0c;让精神和思维得到滋养&#xff0c;更加懂得珍惜和感恩&#xff0c;这是旅行给予生活的灵感。西方一位哲人也说过&#xff0c;“生命的意义在于尝试&#xff0c;体验不同的可能”&#xff0c;旅行能…