一,什么是rpm

rpm是redhat package manager

redhat的软件包管理器

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,查看rpm命令所属的包

[root@blog ~]$ whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz [root@blog ~]$ rpm -qf /usr/bin/rpm
rpm-4.14.2-11.el8_0.x86_64

三,查看rpm的版本和帮助

1,查看版本

[root@blog ~]# rpm --version
RPM version 4.14.2

2,查看帮助

[root@blog ~]# rpm --help 

四,rpm的用法例子之一:查询已安装rpm包

说明:查询已安装rpm包时一律使用 -q

1,查询某个rpm包是否已安装

#如已安装,会显示完整的包名称

#如未安装,会给出提示

[root@blog ~]# rpm -q openresty
openresty-1.15.8.2-6.el8.x86_64 [root@blog ~]# rpm -q nginx
package nginx is not installed

2,查询系统中所有安装的rpm包

# -q:query 查询

# -a:query/verify all packages   所有包

[root@blog ~]# rpm -qa 

#因为系统中的rpm包较多,建议使用管道传递给more或less

[root@blog ~]# rpm -qa | more 

3,查询一个文件属于哪个rpm包?

# -q:query 查询

#-f:    Query package owning FILE,查询哪个rpm包包含指定文件

[root@blog ~]# rpm -qf /usr/bin/rpm
rpm-4.14.2-11.el8_0.x86_64

#如果查询的文件不属于rpm包,则会给出提示

[root@blog ~]# rpm -qf /root/echo.sh
file /root/echo.sh is not owned by any package

4,列出一个rpm中包含哪些文件?

# -q:query 查询

# -l : List files in package   列出包中的文件

[root@blog ~]# rpm -ql openresty
/usr/bin/openresty
...

5,显示一个rpm包的信息

# -q:query 查询

#-i:    Display package information  显示包信息

[root@blog ~]# rpm -qi openresty
Name : openresty
Version : 1.15.8.2
Release : 6.el8
Architecture: x86_64
Install Date: Thu 05 Mar 2020 10:19:52 AM CST
Group : System Environment/Daemons
Size : 3562830
License : BSD
Signature : RSA/SHA256, Sun 08 Sep 2019 08:12:43 AM CST, Key ID 97db7443d5edeb74
Source RPM : openresty-1.15.8.2-6.el8.src.rpm
Build Date : Sun 08 Sep 2019 08:12:40 AM CST
Build Host : rhel8-pkg
Relocations : (not relocatable)
Packager : Yichun Zhang (agentzh) <yichun@openresty.com>
URL : https://openresty.org/
Summary : OpenResty, scalable web platform by extending NGINX with Lua
Description :
This package contains the core server for OpenResty. Built for production
uses.

6,查询rpm包的配置文件

#-c: 列出配置文件的位置

[root@blog ~]# rpm -qc openresty
/usr/local/openresty/nginx/conf/fastcgi.conf
...

7,查询rpm包的文档

#-d: 列出man或doc的位置

[root@blog ~]# rpm -qd systemd 

8,查询指定的rpm包所依赖的软件包及文件

# -R, --requires   List capabilities on which this package depends.

[root@blog ~]# rpm -qR openresty
/bin/sh
/bin/sh
/bin/sh
openresty-openssl >= 1.1.0h-1
openresty-pcre >= 8.42-1
openresty-zlib >= 1.2.11-3
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
systemd

五,rpm的用法例子之二:对未安装软件包文件的查询:

使用 -qp参数
#-p, --package PACKAGE_FILE Query an (uninstalled) package PACKAGE_FILE.

1,查询未安装软件包的信息

#-i:显示包信息

[root@blog source]# rpm -qpi ImageMagick-6.9.10.86-1.el8.x86_64.rpm
Name : ImageMagick
Epoch : 0
Version : 6.9.10.86
Release : 1.el8
Architecture: x86_64
...

2,列出未安装软件包中包含的文件:

# -l: 列出包中的文件

[root@blog source]# rpm -qpl ImageMagick-6.9.10.86-1.el8.x86_64.rpm
/usr/bin/animate
/usr/bin/compare
/usr/bin/composite
/usr/bin/conjure
/usr/bin/convert
...

3,查询未安装rpm包中包含的文档

#-d:列出man或doc的位置

[root@blog source]# rpm -qpd ImageMagick-6.9.10.86-1.el8.x86_64.rpm
/usr/share/doc/ImageMagick/AUTHORS.txt
/usr/share/doc/ImageMagick/ChangeLog
...

4,查询未安装软件包中包含的配置文件

#-c:列出配置文件的路径

[root@blog source]# rpm -qpc ImageMagick-6.9.10.86-1.el8.x86_64.rpm

5,列出未安装rpm包所依赖的软件包及文件

#-R: requires:  rpm包所需要的文件

[root@blog source]# rpm -qpR ImageMagick-6.9.10.86-1.el8.x86_64.rpm
ImageMagick-libs(x86-64) = 0:6.9.10.86-1.el8
libICE.so.6()(64bit)
libMagickCore-6.Q16.so.6()(64bit)
...

六,rpm的用法例子之三:安装

1,安装rpm包

下载安装包

[root@blog source]# wget http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm

安装

#-i:  安装 install

#-v: 显示详细信息 verbose

#-h: 显示软件安装进度

[root@blog source]# rpm -ivh zsh-5.5.1-6.el8.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.5.1-6.el8 ################################# [100%]

2,也可以通过网络在线安装

[root@blog source]# rpm -ivh http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm 

3,只检查依赖关系,不真正安装

# --test : 测试

[root@blog source]# rpm -ivh --test zsh-5.5.1-6.el8.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]

4,安装时忽略依赖关系:

#--nodeps:   忽略依赖关系,强制安装

[root@blog source]# rpm -ivh --nodeps zsh-5.5.1-6.el8.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.5.1-6.el8 ################################# [100%]

七,rpm的用法例子之四:升级

1,升级一个rpm包

#-U:升级软件

[root@blog source]# rpm -Uvh zsh-5.5.1-6.el8_1.2.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.5.1-6.el8_1.2 ################################# [ 50%]
Cleaning up / removing...
2:zsh-5.5.1-6.el8 ################################# [100%]

2,降级安装到低版本的rpm包

# --oldpackage:   安装低版本的软件包

[root@blog source]# rpm -Uvh --oldpackage zsh-5.5.1-6.el8.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.5.1-6.el8 ################################# [ 50%]
Cleaning up / removing...
2:zsh-5.5.1-6.el8_1.2 ################################# [100%]

八,rpm的用法例子之五:卸载

1,删除一个rpm包

#-e :卸载软件

[root@blog source]# rpm -e zsh

2,删除一个rpm包时忽略依赖关系

#--nodeps: 忽略依赖关系强制卸载

[root@blog source]# rpm -e --nodeps zsh

九,rpm的用法例子之六:校验

1,校验rpm包的安装

#-V 用来检查已安装rpm包的完整性

[root@blog source]# rpm -V zsh

说明:如果没有输出,表示无问题

2,已安装rpm包的文件有被修改时的输出:

[root@blog source]# rpm -V openresty
S.5....T. c /usr/local/openresty/nginx/conf/nginx.conf

上面的这个配置文件被修改过(这里只是举例子,属于正常修改)

3,输出格式的说明:

SM5DLUGT c

S:表示对应文件的大小(Size)不一致;

M:表示对于文件的mode不一致;

5:表示对应文件的MD5不一致;

D:表示文件的major和minor号不一致;

L:表示文件的符号连接内容不一致;

U:表示文件的owner不一致;

G:表示文件的group不一致;

T:表示文件的修改时间不一致;

c:只有文件是一个配置文件时才会有此标志,可以用这种方法快速定位rpm包的配置文件安装位置。(不是说只有文件不一致情况下才会显示吗?没错,但是配置文件通常会被修改,所以通常都会被检测出不一致)

注意:校验功能的主要作用不是用来检查配置文件,而是检查rootkit,

如果我们的二进制程序被修改过,可以被这个功能检验出来。

对于安全的检测非常重要

十,从rpm包中提取文件

1,创建工作目录:

[root@blog source]# mkdir zshfile
[root@blog source]# mv zsh-5.5.1-6.el8.x86_64.rpm zshfile/
[root@blog source]# cd zshfile/

2,用rpm2cpio提取rpm包中的文件

[root@blog zshfile]# rpm2cpio zsh-5.5.1-6.el8.x86_64.rpm | cpio -div
[root@blog zshfile]# ls
etc usr zsh-5.5.1-6.el8.x86_64.rpm

提取后的文件保存在 etc和usr 两个目录下面

十一,查看centos的版本

[root@blog ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8平台使用rpm管理软件包的更多相关文章

  1. 使用RPM管理软件包

    一.概念简介 RPM 全名是『 RedHat Package Manager 』简称则为 RPM,是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序. 二.实验环境 ...

  2. centos8平台使用loginctl管理登录用户与session

    一,loginctl的用途: 控制 systemd 登录管理器 管理当前登录的用户和session 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/a ...

  3. centos8平台使用journalctl管理systemd-journald日志

    一,systemd-journald的作用 1,什么是systemd-journald? systemd-journald 是 systemd 自带的日志系统,是一个收集并存储各类日志数据的系统服务. ...

  4. centos8平台使用parted管理分区

    一,parted的用途 parted是GNU发布的强大的分区工具, parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区. 因为fdisk命令对于大于2T的分区无法划 ...

  5. Linux学习 - 02 使用 - Centos8 - 『更换rpm/epel包源为国内源』

    1. Centos8 - 『更换rpm/epel包源为国内源』 centos 8 默认是会读取centos.org的mirrorlist的,所以一般来说是不需要配置镜像的. 如果你的网络访问mirro ...

  6. linux RPM(红帽软件包管理器)和Yum软件仓库中常见的命令

    RPM(红帽软件包管理器)常用命令 安装软件:rpm -ivh filename.rpm 升级软件:rpm -Uvh filename.rpm 卸载软件:rpm -e filename.rpm 查询软 ...

  7. Linux的rpm管理

                            书山有路勤为径,学海无涯苦作舟 自学linux已经有几天了,感觉还可以.坚持下去,就会有收获. 每个系统都用相应的软件的管理,Linux也不例外.下面讲 ...

  8. Linux基础-11-rpm管理软件包

    1. 使用RPM安装及移除软件 1) RPM的定义:RPM就是Red Hat Package Manger(红帽软件包管理工具)的缩写. 2) rpm的文件名分为5部分,其中: 第1部分是name,表 ...

  9. linux软件管理之rpm管理rpm包

    使用RPM工具管理RPM包 ====================================================================================需要 ...

随机推荐

  1. 自然常数e的含义

    e是一个重要的常数,但是它的直观含义却不像 π 那么明了.我们都知道,圆的周长与直径之比是一个常数,这个常数被称为圆周率,记作 π = 3.14159......可是e代表什么呢? e是“指数”(ex ...

  2. 没使用Spring Cloud的版本管理导致Eureka服务无法注册到Eureka服务注册中心

    创建了一个Eureka Server的服务注册集群(两个Eureka服务),都能相互注册,写了一个Eureka客户端服务无法注册到服务发现注册中心 注册中心1: 注册中心2: 服务正常: pom依赖文 ...

  3. Redis底层数据结构详解

    上一篇说了Redis有五种数据类型,今天就来聊一下Redis底层的数据结构是什么样的.是这一周看了<redis设计与实现>一书,现来总结一下.(看书总是非常烦躁的!) Redis是由C语言 ...

  4. 【JAVA】JAVA相关知识点收集

    下面这些链接都是我这段时间(7月-9月)看过的.感觉自己现在处于一个疯狂吸收知识的阶段,如果是文字的方式一点一点搬运到自己的博客既重复又费时间,只有等自己积累到一定程度后才能进行原创性高质量的产出吧. ...

  5. tf.split函数的用法(tensorflow1.13.0)

    tf.split(input, num_split, dimension): dimension指输入张量的哪一个维度,如果是0就表示对第0维度进行切割:num_split就是切割的数量,如果是2就表 ...

  6. C++实现链表---可直接运行通过

    main.cpp 1 #include "myDataBase.h" 2 3 int main() 4 { 5 int i =0; 6 myDataBase::GetInstanc ...

  7. Activiti工作流系统环境搭建

    一.创建Activiti工程,并导入Activiti包及数据库驱动包 二.用代码方式创建 流程引擎 1 @Test 2 public void createProcessEngineWithCode( ...

  8. Ubuntu18.04修改apt-get源

    1)备份源文件: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2)查看版本信息 如是Linux Mint等Ubuntu衍生版,执行: ...

  9. Zookeeper基础理论

    Zookeeper是分布式开源协调服务, 主要用来解决分布式集群中应用系统的一致性问题. 本质上是分布式小文件存储系统.   特性 全局数据一致性(集群中每个服务器保存一份相同的数据副本,Client ...

  10. Solon详解(11)- Mybatis 与 Solon 相亲相爱

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...