当前位置: 首页 > 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机制

http://www.lryc.cn/news/9391.html

相关文章:

  • 01背包问题
  • 14_FreeRTOS二值信号量
  • JavaScript随手笔记---轮播图(点击切换)
  • 机器人学 markdown数学公式常用语法
  • 如何使用 Python 语言来编码和解码 JSON 对象
  • 【蓝桥云课】求正整数的约数个数
  • 刷题记录: wannafly25 E 牛客NC19469 01串 [线段树维护动态dp]
  • 懂九转大肠的微软New Bing 内测申请教程
  • WRAN翻译
  • ROS学习笔记——第二章 ROS通信机制
  • MacOS Pytorch 机器学习环境搭建
  • 项目——博客系统
  • PHP(14)会话技术
  • 对JAVA 中“指针“理解
  • 功率放大器在MEMS微结构模态测试研究中的应用
  • 【算法基础】字典树(Trie树)
  • MyBatis 插件 + 注解轻松实现数据脱敏
  • MySQL优化篇-MySQL压力测试
  • CF43A Football 题解
  • Nginx常用命令及具体应用(Linux系统)
  • 从零实现Web服务器(三):日志优化,压力测试,实战接收HTTP请求,实战响应HTTP请求
  • MFC入门
  • 1、H5+CSS面试题
  • 亚马逊云科技重磅发布《亚马逊云科技汽车行业解决方案》
  • Springboot扩展点之FactoryBean
  • 新库上线 | CnOpenDataA股上市公司交易所监管措施数据
  • 同步辐射XAFS表征方法的应用场景分析
  • 06 antdesign react Anchor 不同页面之间实现锚点
  • mysql调优-内存缓冲池
  • 【LeetCode】每日一题(5)