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机制的优点:
- RPM内包含已经编译过的程序和配置文件等数据,用户不需要重新编译
- RPM在被安装前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装
- RPM文件本身提供软件版本信息、依赖属性检查、软件用途说明、软件所含文件等信息,便于了解文件
- RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询和验证
RPM机制的问题:
- 软件安装的环境必须与打包时的环境需求一致或相当
- 需要满足软件的依赖属性需求
- 反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题
SRPM的作用就是为了解决我们无法安装环境需求不同的RPM软件包
SRPM的全名为Source RPM,也就是这个RPM文件里面含有源代码,并且仍然含有该软件所需要的依赖性软件说明以及所有RPM文件所提供的数据,不同的是它也提供了参数配置文件(configure与makefile),因此我们在安装该软件时需要先将该软件以RPM管理的方式编译(此时SPRM会被编译成为RPM文件),然后将编译完成的RPM文件安装到Linux系统当中
我们可以通过修改SRPM内的参数配置文件,然后重新编译产生能适合我们Linux环境的RPM文件
| 文件格式 | 文件名格式 | 直接安装与否 | 内含程序类型 | 可否修改参数并编译 | 
| RPM | xxx.rpm | 可 | 已编译 | 不可 | 
| SRPM | xxx.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 摘要: 图像超分辨率技术是图像处理和计算机视觉领域的一项基础技术。近年来,…...
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 字面描述 题面翻译 题面描述 两只足球队比赛,现给你进…...
 
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
 
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
 
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
 
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
 
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
 
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...





