当前位置: 首页 > news >正文

Linux软件管理RPM

目录

前言

RPM软件管理程序:rpm

RPM默认安装的路径

PRM讲解前准备工作

RPM安装(install)

RPM查询(query)

RPM卸载(erase)

RPM升级与更新(upgrade/freshen)

RPM重建数据库(rebuilddb)

软件的属性依赖问题


前言

RPM全名是 RedHat Package Manager。顾名思义,这个软件管理的机制是由Red Hat公司发展出来的

RPM是以一种数据库记录的方式来将你所需要的软件安装到你的Linux系统的一套软件管理机制,它将你要安装的软件先编译过,并且打包成为RPM机制的文件,通过打包好的软件里面默认的数据库,记录这个软件安装时候必须具备的依赖属性软件

当在你的Linux主机安装时,RPM会先依照软件里面的数据查询Linux主机的依赖属性软件是否满足,若满足则予以安装,若不满足则不予以安装,这个就是RPM类型的文件最为人所诟病的软件的属性依赖问题

安装的时候会将该软件的信息整个写入RPM的数据库中,以便未来的查询、验证与反安装

RPM机制的优点

  1. RPM内包含已经编译过的程序和配置文件等数据,用户不需要重新编译
  2. RPM在被安装前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装
  3. RPM文件本身提供软件版本信息、依赖属性检查、软件用途说明、软件所含文件等信息,便于了解文件
  4. RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询和验证

RPM机制的问题

  1. 软件安装的环境必须与打包时的环境需求一致或相当
  2. 需要满足软件的依赖属性需求
  3. 反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题

SRPM的作用就是为了解决我们无法安装环境需求不同的RPM软件包

SRPM的全名为Source RPM,也就是这个RPM文件里面含有源代码,并且仍然含有该软件所需要的依赖性软件说明以及所有RPM文件所提供的数据,不同的是它也提供了参数配置文件(configure与makefile),因此我们在安装该软件时需要先将该软件以RPM管理的方式编译(此时SPRM会被编译成为RPM文件),然后将编译完成的RPM文件安装到Linux系统当中

我们可以通过修改SRPM内的参数配置文件,然后重新编译产生能适合我们Linux环境的RPM文件

文件格式文件名格式直接安装与否内含程序类型可否修改参数并编译
RPMxxx.rpm已编译不可
SRPMxxx.src.rpm不可未编译的源代码

RPM软件管理程序:rpm

RPM默认安装的路径

若环境检查无误,等安装完毕后,该软件相关信息就会被写入/var/lib/rpm/目录下的数据库文件中,未来我们有任何软件升级的需求,版本之间的比较就是来自于这个数据库,而如果你想要查询系统已经安装的软件,也是从这里查询的。同时,目前的RPM也提供数字签名信息,这些数字签名也是在这个目录内记录的

/etc一些配置文件放置的目录,例如/etc/crontab
/usr/bin一些可执行文件
/usr/lib一些程序使用的动态函数库
/usr/share/doc一些基本的软件使用手册与说明文件
/usr/share/man一些 man page 文件

PRM讲解前准备工作

安装软件是root的工作,所以我们需要root身份才能够使用rpm命令

/dev/sr0代表光驱设备(也就是RHEL9的安装光盘),此目录下的文件没有办法直接使用,必须先挂载

/mnt/BaseOS  业务软件或第三方软件

/mnt/AppStream   操作系统相关的,比较基础的软件

进入BaseOS中

进入Packages中

我们可以在这个目录中发现许多RMP的数据包

我们拿其中的一个文件名来讲解 zsh-5.8-9.el9.x86_64.rpm

zsh  -5.8- 9.el9.x86_64 .rpm
软件名称软件的版本信息发布的次数适合的硬件平台

扩展名

RPM安装(install)

rpm -ivh package

选项与参数:

-i:install安装的意思

-v:查看更详细的安装信息

-h:显示安装进度

安装zsh-5.8-9.el9.x86_64.rpm

当我们安装当中发现问题,或已经知道会发生的问题,而还是执意要安装软件时,可以使用以下参数强制安装上去

 

 尽量不要使用暴力安装法,就是--force去强制安装,因为可能会发生很多不可预期的问题

RPM查询(query)

rmp -选项

选项与参数:

-q:仅查询,后面接的软件名是否有安装

-qa:列出已经安装在本机上的所有软件名称

-qi:列出该软件的详细信息(information)

-ql:列出该软件所有的文件与目录所在完整文件名(list)

-qc:列出该软件的所有配置文件(找出在/etc/下面的文件名而已)

-qd:列出该软件的所有说明文件(找出与man有关的文件而已)

-qf:由后面接的文件名,找出该文件属于哪一个已安装的软件

-qR:列出该软件有关的依赖软件所含的文件(Required的意思)

查询安装前后,zsh开头的软件是否被安装了

RPM卸载(erase)

删除的选项很简单,通过-e即可删除

要注意的是,卸载过程一定要由最上层往下解除

RPM升级与更新(upgrade/freshen)

用RPM来升级非常简单,使用-Uvh或-Fvh即可

  • -Uvh:后面接的软件即使没有安装过,则系统将予以安装;若后面接的软件有安装过旧版,则系统自动更新至新版
  • -Fvh:如果后面接的软件并未安装到你的Linux系统上,则该软件不会被安装;亦即只有已安装至你Linux系统内的软件才会被升级

RPM重建数据库(rebuilddb)

由于RPM文件常常会安装、删除、更新等,某些操作会导致RPM数据库/var/lib/rpm/内的文件损坏,如果如此的话,我们可以使用--rebuilddb选项来重建一下数据库

软件的属性依赖问题

 

我们可以发现,我们在安装此软件包时,会发生错误 即此软件包需基于其他软件包

解决方案:YUM机制

相关文章:

Linux软件管理RPM

目录 前言 RPM软件管理程序:rpm RPM默认安装的路径 PRM讲解前准备工作 RPM安装(install) RPM查询(query) RPM卸载(erase) RPM升级与更新(upgrade/freshen) RPM重…...

01背包问题

背包问题的递归解决过程如下: 第一步明确思路 在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个…...

14_FreeRTOS二值信号量

目录 信号量的简介 队列与信号量的对比 二值信号量 二值信号量相关API函数 实验源码 信号量的简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 假设有一个人需要在停车场停车 1.首先判断停车场是否还有空车位(判断信号量是否有资源) 2.停车场正好…...

JavaScript随手笔记---轮播图(点击切换)

💌 所属专栏:【JavaScript随手笔记】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…...

机器人学 markdown数学公式常用语法

参考链接1 本文包含了markdown常用的数学公式,按照目录可查询选用 初始类 行内数学公式均用两个符号包裹行间数学公式均用两个符号包裹 行间数学公式均用两个符号包裹行间数学公式均用两个符号包裹,用于表示重要的、需在行间单独列出的公式 $行内数学…...

如何使用 Python 语言来编码和解码 JSON 对象

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。 JSON 函数 使用 JSON 函数需要导入 json 库:import json。 函数 描述 json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Pyth…...

【蓝桥云课】求正整数的约数个数

一、求正整数n的约数个数 方法一(常用算法):从1到n逐一判断其能否整除n,若能整除n即为n的约数,否则不是n的约数。 方法二:从1到n\sqrt{n}n​逐一判断是否为n的约数,当n\sqrt{n}n​为n的约数时,个数加1&…...

刷题记录: wannafly25 E 牛客NC19469 01串 [线段树维护动态dp]

传送门:牛客 题目描述: Bieber拥有一个长度为n的01 串,他每次会选出这个串的一个子串作为曲谱唱歌,考虑该子串从左 往右读所组成的二进制数P。 Bieber每一秒歌唱可以让P增加或减少 2 的 k次方(k由Bieber选 定),但必须…...

懂九转大肠的微软New Bing 内测申请教程

最近微软的New Bing开放内测了,网上已经有拿到内测资格的大佬们对比了ChatGPT和New Bing。对比结果是New Bing比ChatGPT更强大。来看看具体对比例子吧 1.时效性更强 ChatGPT的库比较老,跟不上时事,比如你问它九转大肠的梗,ChatG…...

WRAN翻译

基于小波的图像超分辨残差注意力网络 Wavelet-based residual attention network for image super-resolution 代码: https://github.com/xueshengke/WRANSR-keras 摘要: 图像超分辨率技术是图像处理和计算机视觉领域的一项基础技术。近年来&#xff0c…...

ROS学习笔记——第二章 ROS通信机制

主要跟着[1]学习ros::Rate r(1); //错误,应改为ros::Rate r(10);[2]对Topic通信打的比方很形象,便于理解记忆。[3]有整个过程的图片,对于初学者更加友好[4]对发布者的代码注释非常好,方便进一步学习此外CMake官方文档可以查询相关…...

MacOS Pytorch 机器学习环境搭建

学习 Pytorch ,首先要搭建好环境,这里将采用 Anoconda Pytorch PyCharm 来一起构建 Pytorch 学习环境。 1. Anoconda 安装与环境创建 Anoconda 官方介绍:提供了在一台机器上执行 Python/R 数据科学和机器学习的最简单方法。 为什么最简单…...

项目——博客系统

文章目录项目优点项目创建创建相应的目录,文件,表,导入前端资源实现common工具类实现拦截器验证用户登录实现统一数据返回格式实现加盐加密类实现encrypt方法实现decrypt方法实现SessionUtil类实现注册页面实现前端代码实现后端代码实现登录页…...

PHP(14)会话技术

PHP(14)会话技术一、概念二、分类三、cookie技术1. cookie的基本使用2. cookie的生命周期3. cookie的作用范围4. cookie的跨子域5. cookie的数组数据四、session1. session原理2. session基本使用3. session配置4. 销毁session一、概念 HTTP协议是一种无…...

对JAVA 中“指针“理解

对于Java中的指针,以下典型案例会让你对指针的理解更加深刻。 首先对于: 系统自动分配对应空间储存数字 1,这个空间被变量名称b所指向即: b ——> 1 变量名称 空间 明…...

功率放大器在MEMS微结构模态测试研究中的应用

实验名称:功率放大器在MEMS微结构模态测试研究中的应用研究方向:元器件测试测试目的:随着MEMS器件在各个领域中广泛应用,对微结构进行模态测试获得其动态特性参数对微结构的设计、仿真、制造、以及质量控制和评价等方面具有十分重…...

【算法基础】字典树(Trie树)

一、Trie树原理介绍 1. 基本概念 Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。【高效存储和查找字符串集合的数据结构】,存储形式如下: 2. 用数组来模拟Trie树的…...

MyBatis 插件 + 注解轻松实现数据脱敏

问题在项目中需要对用户敏感数据进行脱敏处理,例如身份号、手机号等信息进行加密再入库。解决思路就是:一种最简单直接的方式,在所有涉及数据敏感的查询到对插入时进行密码加解密方法二:有方法一到出现对所有重大问题的影响&#…...

MySQL优化篇-MySQL压力测试

备注:测试数据库版本为MySQL 8.0 MySQL压力测试概述 为什么压力测试很重要?因为压力测试是唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法。压力测试可以观察系统在不同压力下的行为,评估系统的容量,掌握哪些是重要的变化…...

CF43A Football 题解

CF43A Football 题解题目链接字面描述题面翻译题面描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2代码实现题目 链接 https://www.luogu.com.cn/problem/CF43A 字面描述 题面翻译 题面描述 两只足球队比赛,现给你进…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...