目录
前言
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机制