广告
返回顶部
首页 > 资讯 > 数据库 >包管理工具rpm和yum的用法
  • 184
分享到

包管理工具rpm和yum的用法

2024-04-02 19:04:59 184人浏览 薄情痞子
摘要

包管理工具rpm和yum的用法一、rpm的用法rpm原本是Rde Hat linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐收到其他发行版的采用,R

包管理工具rpm和yum的用法


一、rpm的用法

rpm原本是Rde Hat linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装、升级,间接提升了Linux的适用性。

rpm用法:rpm [OPTioN...]

1、rpm安装软件包,后面需要跟上程序包文件的绝对路径或相对路径

常用选项:

-v:显示指令的执行过程

-vv:详细显示指令执行过程,便于排错

-h:以#号显示程序包管理执行进度

-i,--install:安装程序

包管理工具rpm和yum的用法

rpm在执行安装时还可以使用以下选项:

--test:测试安装,但不真正执行安装

--nodeps:有时安装的包具有依赖关系,需要先安装依赖包,使用该选项后则会忽略依赖关系

--nodigest:不检查包的完整性

--nosignature:不检查包的来源合法性

--noscripts:有的程序安装时会执行相应的脚本,使用该选项将不执行程序自带的脚本

--force:强制

(1)rpm安装程序包时,有可能要安装的包里有一些文件可能会覆盖现有文件,此时可能会出现警告或者提示,缺省情况下是无法正确安装的,这时可以用 rpm --force -i 强制安装即可。

(2)rpm安装程序包时,有可能要安装的包所需要的一些软件没有安装,缺省情况下也是无法正确安装的,这时可以使用 rpm --nodeps -i 来忽略此信息,如果用 rpm -i --force --nodepe 可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。


2、rpm2cpio工具,该工具可以解压缩并安装rpm包内的任意单个文件。如果系统中的某个程序已安装过,但是只是某个文件缺失导致程序不能用,这种情况下如果直接运行 rpm -ivh 进行安装时会提示已安装,如果跟上--force强制安装,则会覆盖该程序的所有文件,这种情况下可以使用rpm2cpio工具进行解压安装,用法如下:

第一步:rpm2cpio 包文件|cpio -itv :可以预览包内的文件列表

第二步:rpm2cpio 包文件|cpio -idv "某一个文件" :只释放软件包列表中的某一个文件

第三步:将释放出来的某个文件拷贝到所需目录下即可


3、rpm升级软件包,升级方式有两种,分别为:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

和 rpm {-F|--freshen} [install-options] PACKAGE_FILE...

-U|--upgrade:这种方式升级软件包时,如果安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”。

-F|--freshen:这种方式升级软件包时,如果安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作。

常用语法为:

rpm -Uvh PACKAGE_FILE... :安装或升级程序包

rpm -Fvh PACKAGE_FILE...:只在旧版本的基础上升级程序包

如果升级过程中有提示或警告而导致不能升级时,也可以结合--force强制升级。

如果升级后软件不能正常运行需要卸载升级的包时可以使用--oldpackage对程序进行降级。

注意:如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而是把新版本的文件重命名(FILENAME.rpmnew)后保留。


4、使用rpm查询软件包

语法:rpm  {-q|--query} [select-options] [query-options]

如果只跟-q,后面不跟任何选项,则可以获得已安装的某个软件包的文件全名

[root@liang7 Packages]# rpm -q zip
zip-3.0-10.el7.x86_6

【select-options】选项有:

-a:所有包,包含所有已安装过的程序包,可以结合grep针对某个关键字查询

[root@liang7 Packages]# rpm -qa     
...                  #省略了列出的软件包
[root@liang7 Packages]# rpm -qa | grep zip
unzip-6.0-15.el7.x86_64
gzip-1.5-8.el7.x86_64
zip-3.0-10.el7.x86_64
bzip2-libs-1.0.6-13.el7.x86_64
bzip2-1.0.6-13.el7.x86_64

-f:查看指定的文件由哪个程序包安装生成

[root@liang7 Packages]# rpm -qf /bin/zip
zip-3.0-10.el7.x86_64

-p rpmfile:针对尚未安装的程序包文件做查询操作,使用该选项时要跟rpm包的文件全名,并且该选项还需要跟其他【query-options】选项同时使用,如rpm -qpl、rpm -qpi等

--whatprovides CAPABILITY:查询指定的CAPABILITY(功能,能力)由哪个包所提供

[root@fengl Packages]# rpm -q --whatprovides bash    #查询bash的功能由那个包提供
bash-4.2.46-19.el7.x86_64
[root@fengl Packages]# rpm -q --whatprovides tree    #查询哪个包提供了tree的功能
tree-1.6.0-10.el7.x86_64

--whatrequires CAPABILITY:查询指定的CAPaiLITY被哪个包所依赖

[root@fengl Packages]# rpm -q --whatrequires bash   #查询bash功能被哪些包所依赖,即哪些包依赖于bash功能
dracut-033-359.el7.x86_64
initscripts-9.49.30-1.el7.x86_64
rsyslog-7.4.7-12.el7.x86_64
lvm2-2.02.130-5.el7.x86_64
kpatch-0.1.10-4.el7.noarch
bash-completion-2.1-6.el7.noarch

【query-options】选项有

--changelog:查询rpm包的版本更新记录

[root@fengl Packages]# rpm -q --changelog tree 
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.6.0-10
- Mass rebuild 2014-01-24

* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.6.0-9
- Mass rebuild 2013-12-27

* Thu Jul 04 2013 Tim Waugh <twaugh@redhat.com> - 1.6.0-8
- Handle large UID/GID values (bug #980945).
...        后面部分省略

-l:列出某软件包中的文件列表,使用该选项只需要指定软件包名即可,不能跟 .rpm 后缀名,如果查询的是未安装的软件包中包含的文件列表,需要再跟上-p选项,此时需要跟未安装的软件包全称,即带有.rpm后缀名

[root@liang7 Packages]# rpm -ql zip 
/usr/bin/zip
/usr/bin/zipcloak
...        #后面部分省略
[root@liang7 Packages]# rpm -qpl tree-1.6.0-10.el7.x86_64.rpm 
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

-c:查询已安装的某程序的配置文件,跟包名

[root@liang7 Packages]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

-d:查询某程序的相关文档,跟包名,也可以再跟上-p查询未安装程序的相关文档

[root@liang7 Packages]# rpm -qd yum
/usr/share/doc/yum-3.4.3/AUTHORS
/usr/share/doc/yum-3.4.3/COPYING
/usr/share/doc/yum-3.4.3/ChangeLog
...        #后面部分省略
[root@liang7 Packages]# rpm -qpd tree-1.6.0-10.el7.x86_64.rpm 
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

-i:infORMation,显示某软件包的详细信息,跟包名,也可以再跟上-p查询未安装程序的详细信息

[root@liang7 Packages]# rpm -qi yum
Name        : yum
Version     : 3.4.3
Release     : 132.el7.Centos.0.1
Architecture: noarch
Install Date: Thu 21 Jul 2016 02:45:35 AM CST
...        #后面部分省略
[root@liang7 Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm 
Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: (not installed)
...            #后面部分省略

-R:显示指定的程序包所依赖的CAPABILITY(能力),跟包名,也可以再跟上-p查询未安装程序包所依赖的功能

[root@liang7 Packages]# rpm -qR zip
libbz2.so.1()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
...        #后面部分省略

--provides:列出指定程序包所提供的CAPABILITY(能力),跟包名,也可以再跟上-p查询未安装程序包所提供的功能

[root@fengl Packages]# rpm -q --provides zip   #查看zip提供了哪些功能
zip = 3.0-10.el7
zip(x86-64) = 3.0-10.el7

--scripts:查询程序包自带的脚本,跟包名,也可以再跟上-p查询未安装程序包自带的脚本

[root@fengl Packages]# rpm -q --scripts bash
postinstall scriptlet (using <lua>):
nl        = '\n'
sh        = '/bin/sh'..nl
bash      = '/bin/bash'..nl
f = io.open('/etc/shells', 'a+')
...    #后面部分省略


5、使用rpm卸载程序包,卸载时需要使用-e选项,具体用法如下:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

--allmatches:卸载与指定程序相关的所有版本,比如有的程序旧版本和新版本可以同时存在,使用该选项可以将新版本和旧版本都卸载掉,默认一次只卸载一个,卸载时可能会报错,不知道该卸载哪个版本。

--nodeps:程序卸载时也是有依赖性的,需要先卸载依赖于要卸载的程序,使用该选项将不考虑依赖关系,直接卸载。

--noscripts:有的程序卸载时会执行相应的脚本,使用该选项后卸载时不会执行脚本

--notriggers:触发器,即当卸载一个程序时可能会触发另一个操作,使用该选项后将不会执行触发的操作。

--test:测试卸载,并不真的执行卸载


6、使用rpm校验程序包,校验分为两种,一种是校验程序包来源的合法性(签名)和完整性,另一种是校验程序安装后做了哪些更改。

(1)完整性校验的算法使用的是SHA256,签名校验的算法使用的是RSA。如果要校验包的完整性和签名需要先导入所需要的公钥,导入方法为:rpm --import KEYFILE (Centos安装光盘中提供的公钥文件为RPM-GPG-KEY-CentOS-7)。默认情况下安装每一个程序包时都会自动检测包的完整性和签名,如果没有导入公钥,则会提示告警。也可以使用  rpm -K|checksig RPMFILE  命令检测包的完整性和签名。

rpm -qa gpg* :可以查寻已导入的公钥文件

[root@fengl mnt]# rpm --import RPM-GPG-KEY-CentOS-7    #导入公钥文件
[root@fengl mnt]# rpm -qa gpg*        #查询已导入的公钥文件
gpgme-1.3.2-5.el7.x86_64
gpg-pubkey-f4a80eb5-53a7ff4b      #该文件即为导入后的文件
[root@fengl Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm     #校验tree包文件
tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

(2)校验程序包安装后各个相关文件的属性是否被篡改等。

用法:rpm {-V|--verify} [select-option] [verify-options]

校验结果可能有以下几种:

S :file Size differs

M:Mode differs (includes permissions and file type)

5 :digest (formerly MD5 sum) differs

D:Device major/minor number mismatch

L:readLink(2) path mismatch

U:User ownership differs

G:Group ownership differs

T:mTime differs

P:capabilities differ


7、rpm数据库,所有已安装的程序都会记录在rpm数据库中,rpm校验和查询及卸载都依赖于rpm数据库。

rpm数据库路径:/var/lib/rpm

rpm --initdb:初始化数据库,如果事先不存在数据库,则新建数据库,否则不执行任何操作。

rpm --rebuilddb:重建已安装的包头的数据库索引目录,只创建库目录下的Packages文件。


二、YUM的用法

YUM全称为 Yellowdog Update Modifier,yum是rpm的前端程序,用来解决软件包相关的依赖关系,可以在多个库之间定位软件包,是up2date的替代工具。

yum repository:仓库,存储了众多的rpm包,以及包的相关元数据文件(放置于特定目录repodata下)


1、yum客户端配置文件:

/etc/yum.conf:为所有仓库提供公共配置。

/etc/yum.repos.d/*.repo:为仓库的指向提供配置,仓库的指向路经支持三种文件服务器路径的写法,分别为 ftp://  和Http://  及 file:///


仓库指向的配置文件都是以“.reop”结尾的,一个配置文件中可以配置多个仓库,也可以一个仓库建一个配置文件,但是必须保证每个仓库的配置都是正确的,否则一个仓库有问题将会导致yum功能不可用,仓库的配置文件内容主要包括以下几项:

[base]        # 仓库名称,必写项
name=CentOS-$releasever - Base   # 描述,可以不写
baseurl=  # 存放rpm软件包的仓库路径,必写项
gpGCheck={1|0}    #是否开启校验,主配置文件中默认开启,1表示启用,0表示不启用
gpgkey=   # 包校验的公钥路径,如果开启校验则该项必写
enabled={1|0}    #是否启用该仓库,主配置文件默认开启,1表示启用,0表示不启用
failovermethod={roundrobin|priority}  #模式选择,默认是roundrobin

示例1:

[root@fengl yum.repos.d]# cat base.repo 
[base]
name=CentOS7
baseurl=file:///mnt/
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
enable=1


2、yum命令的用法:yum [options] [command] [package ...]

常用命令选项有:

--nogpgcheck:禁止进行gpg check

-y:自动回答“yes”

-q:静默模式

-c:指定配置文件

-v:详细模式

-R:设置yum处理一个命令的最大等待时间,以秒为单位

--noplugins:禁用所有插件

--disablerepo=repoidglob:临时禁用此处指定的repo

--enablerepo=repoidglob:临时启用此处指定的repo

常用的命令有:

yum repolist [all]:显示所有的仓库列表

yum repolist enable:只显示已启用的仓库列表

yum repolist disable:只显示未启用的仓库列表

yum list [all]:显示程序包列表,包括已安装的和仓库中的所有列表

yum list available:显示可获得的程序列表

yum list installed:显示已安装过的程序列表

yum list updates:显示可升级的程序列表

yum info 包名:相当于rpm -qi ,查看软件包信息,两者查看结果又区别

yum provides FEATURE1 ... :查看指定的特性(可以是文件)由哪个程序包所提供

yum clean [ packages|metadata|headers|expire-cache|dbcache|cache|all ] :清理缓存

yum search string1 ...:以指定的关键字搜索程序包名及概要信息

yum deplist PACKAGE1 ...:显示指定rpm软件包的所有依赖关系

安装程序包:

yum install PACKAGE1 [PACKAGE2] ...:使用yum安装程序包

yum -y install PACKAGE1 [PACKAGE2] ...:安装时会提示是否执行安装操作,加上-y选项后则不用手动输入yes,将会直接安装。

yum reinstall PACKAGE1 [PACKAGE2] ...:重新安装

yum update [PACKAGE1] [PACKAGE2] ...:升级程序包

downgrade PACKAGE1 [PACKAGE2] ...:降级

yum check-update:检查可用升级包

yum remove PACKAGE1 [PACKAGE2] ...:卸载指定的程序包

查看yum事务历史:

yum history :查看历史

yum history info NUM:查看yum历史中第NUM次的处理信息

yum history undo NUM:回滚,即撤销历史中的第NUM次的软件包安装

您可能感兴趣的文档:

--结束END--

本文标题: 包管理工具rpm和yum的用法

本文链接: https://www.lsjlt.com/news/38896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 包管理工具rpm和yum的用法
    包管理工具rpm和yum的用法一、rpm的用法rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐收到其他发行版的采用,R...
    99+
    2022-10-18
  • 软件包的管理(rpm和yum)
        软件包在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础;只有我们学会软件包的管理才能谈得上其它的应用;本文以目录式的文档格式,列出新手弟兄所面对的...
    99+
    2022-10-18
  • 辨别Linux系统rpm和yum工具的方法
    这篇文章主要介绍“辨别Linux系统rpm和yum工具的方法”,在日常操作中,相信很多人在辨别Linux系统rpm和yum工具的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”辨别Linux系统rpm和yu...
    99+
    2023-06-13
  • 如何分析Linux RPM和YUM包管理
    本篇文章为大家展示了如何分析Linux RPM和YUM包管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先决条件为了最有效地利用本系列中的文章,您应该具有基本的 Linux 知识,并需要准备一个 ...
    99+
    2023-06-16
  • Linux包管理工具yum、apt的区别
    目录概述RedHat 系列Debian系列系列对比 使用方式1 dpkg包2 APT3 rpm包3.1 安装3.2 升级3.3 卸载3.4 查看4 yum安装yum特点yum详细指令总结一般来说著名的 linu...
    99+
    2023-04-22
    Linux包管理工具yum apt的区别 yum和apt的区别
  • Node.js包管理工具npm和yarn的用法
    这篇文章主要讲解了“Node.js包管理工具npm和yarn的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js包管理工具npm和yarn的用...
    99+
    2022-10-19
  • Node.js打包管理工具NPM用法
    目录一、NPM使用介绍二、NPM全局安装和本地安装本地安装:全局安装:本地安装与全局安装命令:三、npm安装package.json四、npm安装模块五、模块的其他操作六、版本号七、...
    99+
    2022-11-13
  • Go语言包管理工具Godep的用法
    一、为什么要包管理 默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题。 举个例子:当A同事将开发完程序之后,此时可能引用了...
    99+
    2022-11-11
  • 详解node中的包和包管理工具
    包从哪里来的?不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。 在这里记笔记:免费的!!!为什么我们要用包?由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块...
    99+
    2022-11-24
    node Node.js
  • Python包管理工具pip用法详解
    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算、画图、操作文件、聊天…… 我们可以通过Cmd终端、P...
    99+
    2022-11-11
  • vscode使用nuget包管理工具
    目录一、使用dotnet add package 命令行实现1、列出Nuget本地的路径2、使用dotnet命令安装引用Nuget包3、安装引用指版本使用-v4、使用特定源安装引用N...
    99+
    2022-11-13
  • node中的包和包管理工具怎么安装使用
    这篇“node中的包和包管理工具怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node中的包和包管理工具怎么安装...
    99+
    2023-07-04
  • Linux的包管理工具介绍
     概述:     本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装一、软件运行环境  1.API:Appl...
    99+
    2022-10-18
  • linux程序包管理rpm,yum和编译安装以及冒泡排序练习
    linux程序包管理:API:Application Programming InterfacePOSIX:Portable OS程序源代码--> 预处理--> 编译--> 汇编-->...
    99+
    2022-10-18
  • 在LINUX系统中Fedora yum管理工具的使用分析
    本篇文章给大家分享的是有关在LINUX系统中Fedora yum管理工具的使用分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Fedora yum管理工具还是比较常用的,于是...
    99+
    2023-06-16
  • Node.js包管理工具怎么使用
    这篇文章主要介绍“Node.js包管理工具怎么使用”,在日常操作中,相信很多人在Node.js包管理工具怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js包管理工具怎么使用”的疑惑有所帮助!...
    99+
    2023-07-06
  • 有哪些常用的 Java 打包工具和 NPM 包管理工具?如何在编程算法中使用它们?
    Java 打包工具和 NPM 包管理工具在现代软件开发中扮演着重要的角色。Java 开发人员通常使用 Maven 或 Gradle 进行项目构建和依赖管理,而 Node.js 开发人员则使用 NPM 进行包管理。在本文中,我们将讨论这些工具...
    99+
    2023-07-31
    打包 npm 编程算法
  • node.js的NPM包管理工具如何使用
    这篇文章主要介绍“node.js的NPM包管理工具如何使用”,在日常操作中,相信很多人在node.js的NPM包管理工具如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-12-05
    node.js npm
  • k8s的包管理工具helm使用简介
    目录Helm Helm是什么?Helm中一个很重要的元素:Chart使用Helm安装helm客户端注意点通过二进制的方式安装helm客户端:添加chart存储库搜索chart存储库安...
    99+
    2022-11-13
  • Python虚拟环境和包管理工具Pipe
    前言 Python虚拟环境是一个虚拟化,从电脑独立开辟出来的环境。在这个虚拟环境中,我们可以pip安装各个项目不同的依赖包,从全局中隔离出来,利于管理。 传统的Python虚拟环境有virtualenv,使用pip freeze ->...
    99+
    2023-01-31
    管理工具 环境 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作