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

news2025/1/10 11:57:22

文章目录

  • 前言🚀🚀🚀
  • 一. rpm命令介绍
    • 1.1 RPM包介绍
    • 1.2 rpm包的优缺点
    • 1.3 rpm包获取方式
  • 二. 语法格式及常用选项
    • 2.1 RPM安装常用参数
    • 2.2 rpm格式介绍
  • 三. 应用案例
    • 3.1 从本地安装软件包
    • 3.2 查询lrzsz的包有没有安装
    • 3.3 查询命令是哪个包安装的
    • 3.4 查询一个软件包的详细信息
    • 3.4 删除软件包
    • 3.5 升级软件包
    • 3.6 rpm包校验
  • 总结

前言🚀🚀🚀

想要学好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修订版本号
27release 第几次发布版本
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 查看命令是否被改动过

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.1(完结)Linux扫盲笔记

1. Linux环境下&#xff0c;输入密码&#xff0c;不回回显(*)。 2.普通用户的密码一定不要和root一样&#xff0c;root一定要安全级别更高。具体的添加账户和修改密码的操作&#xff0c;见蛋哥Linux训练营&#xff0c;第2课&#xff0c;30分钟处。 3.在最高权限(root)&#x…

java基础学习 day37 (集合)

集合与数组的区别 长度&#xff1a;数组长度固定&#xff0c;一旦创建完成&#xff0c;就不能改变。集合长度可变&#xff0c;根据添加和删除元素&#xff0c;自动扩容或自动收缩&#xff0c;&#xff08;添加几个元素就扩容多少&#xff0c;删除几个元素就收缩多少&#xff0…

JMeter测试redis性能

JMeter测试redis性能前言插件使用说明前言 针对Redis的性能测试需求本身就比较小众&#xff0c;因为Redis的性能指标在官网已经给出了详细的数据。但是有时候我们仍然需要对redis进行性能测试&#xff0c;例如资源配置需求&#xff0c;参数调优对比&#xff0c;程序优化等场景…

树型结构——二叉数

之前就说过我们的数据结构分为两种&#xff0c;分别是线性结构和非线性结构&#xff0c;我们今天要学的第一种线性结构就是树型结构。 1. 树型结构 树型结构并非我们熟悉的重点&#xff0c;所以在这里只做了解。 概念&#xff1a; 树是一种非线性的数据结构&#xff0c;它是…

【人工智能原理自学】循环:序列依赖问题

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解循环&#xff1a;序列依赖问题&#xff0c;一起卷起来叭&#xff01; 目录一、“序列”二、代码实现一、“序列” 数据除了在空间上可能出现关联性外&#xff0c;也可…

nodejs在线教学网上授课系统vue367

目 录 摘 要 I Abstracts II 目 录 III 第1章 绪论 1 1.1课题背景 1 1.2研究意义 1 1.3研究内容 2 第2章 技术介绍 1 2.1 相关技术 1 1、 node_modules文件夹(有npn install产生) 这文件夹就是在创建完项目后&#xff0c;cd到项目目录执行np…

基于nodejs+vue驾校预约网站管理系统

系统分为用户和管理员&#xff0c;教练三个角色 目 录 第1章 绪论 1 1.1课题背景 1 1.2 背景意义 1 1.3 研究的内容 2 第2章 相关技术 3 第3章 系统分析 5 3.1可行性分析 5 3.2系统性能分析 6 3.3系统流程分析 6 3.3.1操作流程 6 3.3.2信息添加…

Cadence PCB仿真使用Allegro PCB SI生成电源地噪声报告SSN Report及报告导读图文教程

🏡《Cadence 开发合集目录》   🏡《Cadence PCB 仿真宝典目录》 目录 1,概述2,生成报告3,报告导读4,总结1,概述 SSN报告等效的电源和地噪声源报告。本文简单介绍使用Allegro PCB SI生成SSN报告的方法,及其要点导读。 2,生成报告 第1步,选择需要生成报告的网络,…

【绝密】大厂笔试题

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;C语言刷题 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&…

微信支付账户更换实名认证微信钱包零钱余额还在吗?怎么更换微信钱包实名认证?

原文来源&#xff1a;https://www.caochai.com/article-4119.html 微信支付账户更换实名认证微信钱包零钱余额还在吗&#xff1f; 微信支付账户更换实名认证微信钱包的零钱余额将清空&#xff0c;因为更换微信钱包实名认证的前提条件是微信钱包零钱余额不能大于0元。所以&…

一周学习总结(2022.1.25)

文章目录前言本周任务完成情况1.《Vue.js的设计与实现》2.《计算机网络&#xff1a;自顶向下方法》3.组件库4.青训营笔记5.刷题总结前言 年前给自己定下了一组学习计划&#xff0c;安排了每天需要完成的事情。这里主要记录一下每周任务的完成情况。本周定制的任务主要围绕着《V…

DP初入门

目录 一、前言 二、DP概念 1、最少硬币问题 2、DP的两个特征 三、0/1背包&#xff08;最经典的DP问题&#xff09; 1、小明的背包1&#xff08;lanqiaoOJ题号1174&#xff09; 2、空间优化&#xff1a;滚动数组 1&#xff09;交替滚动 2&#xff09;自我滚动 一、前言…

C语言函数调用详解

所谓函数调用&#xff08;Function Call&#xff09;&#xff0c;就是使用已经定义好的函数。函数调用的一般形式为&#xff1a;functionName(param1, param2, param3 ...);functionName 是函数名称&#xff0c;param1, param2, param3 ...是实参列表。实参可以是常数、变量、表…

【Java开发】Spring Cloud 10 :Stream消息驱动

官方定义Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。它为一些供应商的消息中间件产品提供了个性化的自动化配置实现&#xff0c;Spirng Cloud Stream 本质上就是整合了 Spring Boot 和 Spring Integration&#xff0c;实现一套轻量级的消息驱动的微服…

Python内置包Tkinter的重要控件(下)

本文将接着介绍剩下的五个重要的控件&#xff0c;包括Canvas&#xff0c;Messagebox&#xff0c;Listbox&#xff0c;Checkbutton&#xff0c;Radiobutton。 目录 前言 控件 1. Canvas 2. Messagebox 3. Listbox 4. Radiobutton 5. Checkbutton 总结 前言 包括但不…

VBA提高篇_08 数据源类型判断 / 四舍五入

文章目录数据类型操作1. 数据类型判断2.数据类型转换2.1转换函数2.2 关于小数数据类型的四舍五入2.2.1 银行家舍入法2.2.2 Round()函数2.2.3 Int()函数数据类型操作 1. 数据类型判断 IsDate() 是否是日期类型 IsNumeric() 是否是数值类型 TypeName(x) 返回x 的数据类型的名称…

移动端特点和flex布局

移动端特点和flex布局移动端特点物理分辨率和逻辑分辨率视口视口标签二倍图百分比布局flex布局主轴对齐方式侧轴对齐方式伸缩比圣杯布局移动端特点 PC端/移动端不同 PC端 屏幕大&#xff0c;网页固定版心浏览器繁多&#xff0c;更多考虑兼容性问题。&#xff08;布局&#xf…

Gin+Vite实现单图上传

前言 参考文献&#xff1a;https://blog.csdn.net/heian_99/article/details/122447855 案例目的&#xff1a;实现前端上传图片并显示&#xff0c;后端保存图片&#xff1b; 技术&#xff1a;elementplus、axios、vue3、vite、gin 实现原理&#xff1a; 前端请求对应后端接口…

连通性1(Tarjan 理论版)

目录 一、无向图割点、桥、双连通分量 Tarjan 算法求割点和桥&#xff08;割边&#xff09; “割点”代码 边双和点双连通分量 边双连通分量 和 点双连通分量 的缩点 二、有向图强连通分量 1.有向图的弱连通与强连通 2.强连通分量 Kosaraju算法 Tarjan 算法&#xff08…

读书笔记:Python绘制三维图像 ← 斋藤康毅

下文给出了绘制函数 的 Python 代码。 很显然&#xff0c;这是一个三维图像。【绘制三维图像的Python代码】 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Dfigplt.figure() axAxes3D(fig) x1np.arange(-3.0, 3.0, 0.1) x2np.…