原文链接:目录导航 | 小弋の阅览室
Linux rpm 命令用于管理套件。rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
例如:
- 版本号:通常分为主版本和小版本,这里主版本是3,小版本就是11
- 硬件平台:目前只要是x86的平台
rpm 一般会从本地查,dnf 一般会从 yum repo 地址去查
rpm -q --provides <package> (dnf repoquery --provides <package>)
看包提供了哪些功能(capability)
rpm -q --whatprovides <capability> (dnf repoquery --whatprovides <capablility>)
看某个功能是哪个包提供的
rpm -q --requires <package> (dnf repoquery --requires <package>)
看包依赖于哪些功能
rpm -q --whatrequires <capability> (dnf repoquery --whatrequires python-enum34)
看某个功能被哪些包依赖
如果是从给定的未安装的 rpm 查询的话,记得添加 -p (--package)。低版本的 rpm 可能不支持 -R(--requires)、-P(--provides)的选项。
rpm -qp --requires <package> (rpm -qpR <package>)
查询 rpm 需要哪些依赖
rpm -qp --provides <package> (rpm -qpP <package>)
查询 rpm 提供了哪些依赖
一般来说,在安装RPM类型的文件时,会先去读取文件内记录的设置参数内容,然后将这些参数和Linux环境比对,找出是否有相关依赖未安装的情况。
如果环境合格,RPM文件的信息就会被写入到下的数据库文件中,这个目录非常重要,记录着所有软件的信息。但是文件本体去了哪里呢?会被打散,分别安装到等路径下
总结一下,如果把Linux系统比作一个冰箱,把一道美食(例如番茄炒蛋,番茄和蛋)比作一个文件。
- 把番茄炒蛋原材料放入冰箱前,先会在冰箱前的菜单上进行记录菜名,例如:。
- 然后再把鸡蛋放到冰箱里蛋类的仓库,番茄放到冰箱蔬菜类的仓库。
- -i install安装的意思
- -v 查看更详细的安装信息
- -h 显示安装进度
传统安装命令
或者同时安装多个包
范例
但是通常会提示缺少依赖,这个时候就需要我们先把依赖包安装好
针对rpm报错可以选择合适命令再安装
通常情况下命令已经可以满足要求,如果必须暴力安装,如下
例如对于包依赖忽视安装命令
只需要记住两个参数
- -Uvh 安装的软件没有安装过,则系统将直接安装,如果安装的软件安装过旧版本,系统直接安装到最新
- -Fvh 如果软件没有安装过,系统不会安装,只有安装过的软件才会安装
- -q 仅查询软件是否安装,后面需跟具体软件名
- -qa 列出安装在本机上的所有软件
- -qi 列出该软件的详细信息,后面需跟具体软件名
- -ql 列出该软件所有的文件目录所在完整文件名,后面需跟具体软件名
- -qc 列出该软件所有的配置文件,后面需跟具体软件名
- -qd 列出该软件所有的说明文件,后面需跟具体软件名
- -qR 列出该软件有关的依赖软件所含的文件,后面需跟具体软件名
- -qf 后面直接跟一个文件,可以查出这个文件属于哪个软件
- -qp[icdlR] 注意:-qp 后面接的所有参数与上面的说明一致。但用途仅在于找出某个 RPM (可以不用安装)档案内的信息,而非已安装的套件信息,其中的 -p 可以简单理解为 package 的简写。
验证
当数据丢失或者误删某个文件时,或者不知道修改了哪个文件时,可以用以下方法验证
- -V 后直接跟软件名,如果软件所含的文件被修改过才会显示
- -Va 列出目前系统上可能被修改过的文件
- -Vp 后直接跟软件名,列出该软件内可能被修改过的文件
- -qf 显示某个文件是否被修改过
在c前有一堆点,前面出的英文大写有:
- S:文件容量大小是否改变
- M:文件的类型和属性是否改变
- 5:MD5校验值
- D:设备的主次代码改变
- L:链接路径
- U:文件所属的用户
- G:文件所属的用户组
- T:文件建立的时间
- P:功能改变
这个c表示配置文件,除此之外还有:
- d:数据文件
- g:幽灵文件
- l:许可证文件
- r:自述文件
当我们用Va检查系统文件时,就可以检查哪些文件被修改过
rpm卸载软件与重构数据库
如果只是卸载软件,只需执行
但是由于软件会互相依赖就会导致,有的软件不能被卸载,除非要把相关依赖也一同卸载
另外rpm数据库可能会文件损坏,这个时候需要重构数据库
rpmbuild
RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。
linux软件包分为两大类:
(1)二进制类包,包括rpm安装包(一般分为i386和x86等几种)
(2)源码类包,源码包和开发包应该归位此类(.src.rpm)。
有时候为了方便源码包的安装,和我们自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,当有了源码包就可以直接编译得到二进制安装包和其他任意包。spec file是制作rpm包最核心的部分,rpm包的制作就是根据spec file来实现的。在制作自定义rpm包的时候最好不要使用管理员进行,因为管理员权限过大,如果一个命令写错了,结果可能是灾难性的,而制件一个 rpm 包普通用户完全可以实现。
安装
RPM打包使用的是rpmbuild命令,这个命令来自rpm-build软件包,这个是必装的。
常用命令
- -bp 只作准备 (解压与打补丁)
- -bc 准备并编译
- -bi 编译并安装
- -bl 检验文件是否齐全
- -ba 编译后做成和
- -bb 编译后做成
- -bs 只做成
目录结构
当执行rpmbuild命令之后,会在当前目录下(一般是根目录)生成一个rpmbuild目录,该目录中包含下面的6个目录(或者用 rpmdev-setuptree 命令生成目录)
- BUILD:源代码解压以后放的位置,只需提供BUILD目录,具体里面放什么,不用我们管,所以真正的制作车间是BUILD目录。
- BUILDROOT:假根,使用临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除。
- RPMS:制作完成后的rpm包存放目录,为特定平台指定子目录(i386,i686,ppc)。
- SOURCES:收集的源文件,源材料,补丁文件等存放位置。
- SPECS:存放spec文件,作为制作rpm包的领岗文件,文件以结尾。
- SRPMS:src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了。
查看rpm包源码
openEuler常用源码包下载地址
以openjdk为例
安装好后
再进入 BUILD,查看源码
Yum(Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum相比rpm优势是更加智能和傻瓜,用yum安装一个软件时会自动把其他依赖安装上,不过需要配置好源。
总结一下,还是拿之前那个冰箱(Linux),一道菜(软件)来比喻,用rpm安装文件时我们需要考虑,冰箱里是否有蔬菜库和鸡蛋库,如果没有我们需要再去配置,这就好比去处理依赖。这时yum的强大之处就来了,我们只需要配置好超市和安装厂家(软件源网址),就会有人亲自来帮你检查依赖和配置,一步到位,把菜放进冰箱。
yum源配置
查看配置文件:每个源的配置文件都不一样,但都存放在该目录下,软件列表都放在
这里以openEuler_aarch64.repo源为例,首先打开
内容如下
- :这个表示的是名称,yum的ID,必须唯一,本地有多个yum源的时候,这里必须是唯一的
- :具体的yum源名字,其实相当于对它的描述描述信息。centos的那么会含有,这个变量参考红帽企业Linux发行版,也就是说表示当前发行版的大版本号。
- :是镜像服务器地址,只能写具体的确定地址,只能有一个baseurl,但里面可以包含多个url
- :这个不一定会有,是镜像服务器的地址列表,里面有很多的服务器地址。baseurl和mirrorlist都是指向yum源的地址,不同点是包含地址的多少。你若自己写的话,我们一般只写一个地址,直接用baseurl就行
- :决定要不要进行验证。gpgcheck若是1,将对下载的rpm将进行gpg的校验,校验密钥就是gpgkey,一般自己的yum源是不需要检测的。gpgcheck=0,那么gpgkey就可以不填写
- :0禁用,1启用
- :填写的数组范围为:1-99,数字越大,优先级越低
修改或替换yum源操作
1.备份源文件:要习惯做备份
2.网上下载源文件,或者自己修改配置文件
3.列出目前yum服务器所使用的源有哪些
4.最后,还需要去除本机上的旧数据,运行以下命令生成缓存,执行以下命令
- packages:将已经下载的安装文件删除
- headers:将下载的安装文件删除
- all:将所有的软件源数据删除
最后的最后,生成新的缓存
yum.conf配置
存放位置于,通常如下,一般来说无需修改此文件
- check-update 列出所有可更新的软件清单
- list 列出所有可安裝的软件清单
- search 查找软件包
- info 获取软件包信息
- install 仅安装指定的软件
- localinstall 安装本地rpm包
- update 仅更新指定的软件
- -y 当yum安装需要确认yes的时候,这个选项自动yes
remove 删除软件包
有一种情况时候是只下载软件,但不进行安装(会把依赖也下载)可以采用以下命令,
- downloadonly 表示只下载不安装
- --downloaddir 用于指定下载文件夹目录
DNF 是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。
DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。
1、为了安装 DNF ,您必须先安装并启用 epel-release 依赖。
在系统中执行以下命令:
或者
2、使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。在系统中执行以下命令:
这里是为后续案例做说明,假设文件在下,内容如下
1、查看版本
用处:该命令用于查看安装在您系统中的 DNF 包管理器的版本
2、查看系统中的软件库(源)
用处:该命令用于显示系统中可用的 DNF 软件库
结果
可以加上all,用于显示系统中可用和不可用的所有的 DNF 软件库
结果
3、列出系统或源上的RPM包
用处:该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
结果
也可以只列出所有安装了的 RPM 包
也可以列出来自所有可用软件库的可供安装的软件包
4、搜索软件库中的RPM包
用处:当你不知道你想要安装的软件的准确名称时,你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索。(在本例中我们使用”mysql”)
结果
5、查找某一文件的提供者
用处:当你想要查看是哪个软件包提供了系统中的某一文件时,你可以使用这条命令。
例如这里我们查找属于哪个rpm包
结果会在所有系统启动的库内搜索,列出所有含有该文件的rpm包
6、查看软件包详情
用处:当你想在安装某一个软件包之前查看它的详细信息时,这条命令可以帮到你。
例如查找mysql
结果会列出所有源下该包信息
其他可选项
7、下载软件包相关
用处:从配置的源中下载指定软件包到本地目录
结果
其他相关主要参数
8、匹配软件包的相关信息
用处:很常用的命令,用于在源中匹配与需要查询的包的一系列相关包信息(带 repoquery 的命令实质上都是从 primary.sqlite 等数据库查询结果的)
如下
查看某个命令是哪个包提供的
查看哪些包的安装依赖这个包
安装软件包
用处:使用该命令,系统将会自动安装对应的软件及其所需的所有依赖(在本例中,我们将用该命令安装nano软件)
升级软件包
用处:该命令用于升级制定软件包(在本例中,我们将用命令升级”systemd”这一软件包)
检查系统软件包的更新
用处:该命令用于检查系统中所有软件包的更新
升级所有系统软件包
用处:该命令用于升级系统中所有有可用升级的软件包
删除软件包
用处:删除系统中指定的软件包(在本例中我们将使用命令删除”nano”这一软件包)
删除无用孤立的软件包
用处:当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。
删除缓存的无用软件包
用处:在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。
获取有关某条命令的使用帮助
用处:该命令用于获取有关某条命令的使用帮助(包括可用于该命令的参数和该命令的用途说明)(本例中我们将使用命令获取有关命令”clean”的使用帮助)
查看所有的DNF命令及其用途
用处:该命令用于列出所有的 DNF 命令及其用途
查看DNF命令的执行历史
用处:您可以使用该命令来查看您系统上 DNF 命令的执行历史。通过这个手段您可以知道在自您使用 DNF 开始有什么软件被安装和卸载。
查看所有的软件包组
用处:该命令用于列出所有的软件包组
安装一个软件包组
用处:该命令用于安装一个软件包组(本例中,我们将用命令安装”Educational Software”这个软件包组)
升级一个软件包组中的软件包
用处:该命令用于升级一个软件包组中的软件包(本例中,我们将用命令升级”Educational Software”这个软件包组中的软件)
删除一个软件包组
用处:该命令用于删除一个软件包组(本例中,我们将用命令删除”Educational Software”这个软件包组)
从特定的软件包库安装特定的软件
用处:该命令用于从特定的软件包库安装特定的软件(本例中我们将使用命令从软件包库 epel 中安装 phpmyadmin 软件包)
更新软件包到最新的稳定发行版
用处:该命令可以通过所有可用的软件源将已经安装的所有软件包更新到最新的稳定发行版
重新安装特定软件包
用处:该命令用于重新安装特定软件包(本例中,我们将使用命令重新安装”nano”这个软件包)
回滚某个特定软件的版本
用处:该命令用于降低特定软件包的版本(如果可能的话)(本例中,我们将使用命令降低”acpid”这个软件包的版本)
样例输出:
到此这篇本机信息安装包在哪里(本机信息安装包在哪里找到)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/39502.html