linux基本功系列之-rpm命令实战

简介: linux基本功系列之-rpm命令实战

@[toc]

前言🚀🚀🚀

想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. rpm命令介绍

1.1 RPM包介绍

RPM 全名 RedHat Package Managerment,是由Red Hat公司提出,被众多Linux发行版本所采用,是一种数据库记录的方式来将所需要的软件安装到到Linux系统的一套软件管理机制。

它会建立统一的数据库文件,详细记录软件包安装 、卸载等变化信息,能够自动分析软件包依赖关系。

最大的特点就是将你要安装的软件先编译过,并且打包成为 RPM 机制的文件,通过打包好的软件里面默认的数据库,记录这个软件要安装的时候必须具备的依赖属性软件

当在你的 Linux 主机安装时,RPM 会先依照软件里面的数据查询Linux 主机的依赖属性软件是否满足,若满足则子以安装,若不满足则不子安装。

1.2 rpm包的优缺点

优点:

  • 由于已经编译完成井且打包完华,所以软件传输与安装上很方便(不需要再重新编译);
  • RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
  • RPM 本身提供软件版本信息、依赖属性检查、软件用途说明、软件所含文件等信息,便于了解软件;
  • RPM 管理使用数据库记录RPM文件的相关参数,便于查询、删除、升级与反安装。

    缺点:

    由于 RPM 文件是已经打包好的数据,也就是说,里面的数据已经都编译完成了,所以,该软件安装文件几乎只能安装在原本默认的硬件与操作系统版本中。

这意味着你的主机系统环境必须要与当初建立这个软件安装文件的主机环境相同才行。

1.3 rpm包获取方式

有三种常用的rpm包获取渠道:

  1. 系统镜像光盘
  2. 网站(如:阿里云分享的源)
  3. 相应软件的官网。

比如阿里的镜像站,如图

在这里插入图片描述

再比如zabbix提供的zabbix源,如下图:
在这里插入图片描述

二. 语法格式及常用选项

2.1 RPM安装常用参数

参数 作用
i 安装(Install)软件。
U 升级(Upgrade)旧版本的软件。
e 移除/删除(Erase)软件。
v 显示详细的处理信息。
h 显示安装进度。卸载不能用
a (all) 查询所有已安装的软件包
f (file)系统文件名(查询系统文件所属哪个软件包),反向查询
i 显示已经安装的rpm软件包信息,后面直接跟包名
l (list) 查询软件包中文件安装的位置
p 查询未安装软件包的相关信息,后面要跟软件的命名
R 查询软件包的依赖性
q 在系统中查询软件或查询指定rpm包的内容信息
c 查询程序包有哪些指定的配置文件
nodeps 不校验依赖性,强制执行

2.2 rpm格式介绍

[root@mufeng ~]# ls /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm 
/mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

rpm包,每一段所包含的意思如下:

名称 作用
lrzsz 软件名字
-0 主版本号
12 次版本号
20 修订版本号
27 release 第几次发布版本
el6 操作系统
x86_64.rpm 软件包是64位的包

三. 应用案例

3.1 从本地安装软件包

案例一: 安装上传下载命令rz

rz命令我们在上传和下载中用的最为广泛。

这里使用的是 -ivh,其中v是详细详细信息, h是查看安装进度。如果我们不使用vh也一样可以安装。

[root@mufeng ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm 
warning: /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
        package lrzsz-0.12.20-27.1.el6.x86_64 is already installed
[root@xinsz08-1 ~]# 

案例二: 只使用i进行安装

[root@mufenggrow ~]# rpm -i /mnt/Packages/http-parser-2.7.1-5.el7_4.x86_64.rpm 
警告:/mnt/Packages/http-parser-2.7.1-5.el7_4.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

案例三: 使用ih能够查看到进度

[root@mufenggrow ~]# rpm -ih /mnt/Packages/zsh-5.0.2-31.el7.x86_64.rpm 
警告:/mnt/Packages/zsh-5.0.2-31.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
################################# [100%]
正在升级/安装...
################################# [100%]
[root@mufenggrow ~]# 

3.2 查询lrzsz的包有没有安装

-q xxx 列出xxx的安装信息
-qa xxx 列出包含 xxx 字段的软件信息

一个是完全匹配,一个是不完全匹配。

[root@mufeng ~]# rpm -q lrzsz
lrzsz-0.12.20-27.1.el6.x86_64

[root@mufenggrow ~]# rpm -qa |grep httpd
httpd-tools-2.4.6-97.el7.centos.5.x86_64
httpd-2.4.6-97.el7.centos.5.x86_64
[root@mufenggrow ~]# 

查看所有已经安装的包

[root@mufeng ~]# rpm -qa |wc -l
1135

3.3 查询命令是哪个包安装的

查询一个命令是哪个软件包安装的,需要用到-qf参数

[root@mufeng ~]# which rz
/usr/bin/rz
[root@mufeng ~]# rpm -qf /usr/bin/rz
lrzsz-0.12.20-27.1.el6.x86_64

3.4 查询一个软件包的详细信息

这时候可以使用pqi的参数
-i,--info:查询程序包相关的信息,包含版本、信息、时间等等

[root@mufenggrow ~]# rpm -qpi /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 
Name        : lrzsz
Version     : 0.12.20
Release     : 36.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Communications
Size        : 184846
License     : GPLv2+
Signature   : RSA/SHA256, 2014年07月04日 星期五 11时35分32秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : lrzsz-0.12.20-36.el7.src.rpm
Build Date  : 2014年06月10日 星期二 07时29分11秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.ohse.de/uwe/software/lrzsz.html
Summary     : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.

可以看到与软件包所有相关的参数,比如软件包名字,版本号,大小等等

3.4 删除软件包

删除软件包使用-e参数

[root@mufeng ~]# rpm -e lrzsz
[root@mufeng ~]# rpm -ql lrzsz

如果有依赖加参数 --nodeps
加上 --nodeps相当于强制删除

[root@mufeng ~]# rpm -e lrzsz --nodeps

3.5 升级软件包

rpm -Uvh zsh-5.0.2-14.el7.x86_64.rpm
参数 描述
-U 升级或者安装
-F 单纯的升级,如果之前没有rpm包将无法升级
--test 测试安装,检查并报告完成 --> rpm -Uvh --test PACKAGE_FILE
--force 强制升级(不建议使用)

注意:
(1)不要对内核做升级操作,Liunx支持多内核并存,直接安装新版本

(2) 如果源程序包的配置文件安装后曾修改过,升级时,新版本的程序提供的同一配置文件不会覆盖原有版本文件,而重命名为(FILENAME,rpmnew)

3.6 rpm包校验

作用: 查看rpm是否被修改

参数:

选项 说明
-V 校验指定RPM包中的文件,若该软件所含的文件被改动过,才会列出来;
-Va 校验本机已经安装的所有软件包
-Vf 校验某个系统文件是否被修改

我们以httpd为例子,看看是否被改动过

[root@mufeng]# yum install httpd   
#安装httpd
[root@mufeng]# rpm -V httpd
[root@mufeng ~]# vim /etc/init.d/httpd  
#6的系统
[root@mufeng ~]# vim /etc/init.d/httpd  
 #修改httpd文件
[root@mufeng~]# rpm -V httpd
S.5....T.    /etc/rc.d/init.d/httpd

可以看到如果没有改动过,rpm -V没有任何的输出。如果改动了之后,就输出了内容

这里对输出的内容做一下解释:

字符 信息提示
S 文件大小已改变;
M 文件的类型或文件的权限(rwx)已改变;
5 文件 MD5 校验和是否改变(可以看成文件内容已改变);
D 设备的主从代码已改变;
L 文件路径已改变;
U 文件的属主(所有者)已改变;
G 文件的属组已改变;
T 文件的修改时间已改变;
P (caPabilities differ) 功能已被改变;

我们也可以修改httpd.conf 来看一下输出结果

[root@mufeng ~]# rpm -Vf /etc/httpd/conf/httpd.conf
S.5....T. c /etc/httpd/conf/httpd.conf

这里出现了个c, c在这里表示的是文件类型

其他类型如图:

字符 表示内容
c 配置文件
d 普通文档
l 授权文件
r 描述文件

总结

rpm安装和卸载十分简单,但查询所用的参数比较多,容易混乱,这里再总结下关于查询的命令:

  • rpm -qpi httpd 查询未安装包的详细信息
  • rpm -qi httpd 查看程序包的相关信息
  • rpm -ql httpd 查看程序包安装产生的文件列表
  • rpm -qc zsh 查看程序包的配置文件
  • rpm -qd zsh 查看程序包提供的文档信息
  • rpm -qR zsh 查询程序包依赖的包
  • rpm -Vf 查看命令是否被改动过

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

请添加图片描述
在这里插入图片描述

相关文章
|
24天前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
55 8
|
6天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
32 14
Linux 10 个“who”命令示例
|
15天前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
30 9
|
14天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
20天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
64 3
|
24天前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
40 4
|
22天前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
25 1
|
5月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
5月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
5月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的