• 13-Linux之rpm软件管理


    1. RPM

    1.1 什么是rpm?
    RPM全称 RedHat Package Manager 缩写, 由红帽开发用于软件包的安装升级卸载与查询.
    
    • 1
    1.2 rpm包名组成部分
    RPM包命名以-将软件分成了若干部分 bash-4.2.46-28.el7.x86_64.rpm
    
    • 1
    bash:软件名  
    4.2.46-28.el7:4是大版本, 2是小版本, 46是修订次数, 28是发布次数, 
    el7是:enterprise linux 7, 使用linux7系统  
    x86_64:64位架构  
    
    • 1
    • 2
    • 3
    • 4

    img

    1.3 获取rpm包
    获取rpm包的方式: 
    1. 本地CentOS镜像文件
       虚拟机加载镜像, 然后在linux中执行命令: mount /dev/cdrom /mnt 
       此时你会在/mnt/Packages目录下看到很多rpm的包文件.
    2. 联网获取(生产环境中几乎联网下载)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1.4 Linux安装软件的方式
    分类安装版本
    rpm包预先编译打包,安装简单软件版本偏低
    源码包手动编译打包,安装繁琐软件版本随意
    二进制包(绿色包)解压即可使用, 安装简单不能修改源码

    2. RPM安装软件

    选项描述
    -i安装rpm
    -v显示安装详细信息
    -h显示安装rpm进度
    –force强制重新安装
    –nodeps忽略依赖关系
    # 加载镜像到设置中
    [root@kid ~]# mount /dev/cdrom /mnt  
    mount: no medium found on /dev/sr0
    
    # 查看镜像中的软件
    [root@kid ~]# ls /mnt/Packages
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 安装软件包, 需要指定软件包绝对路径. 安装tree
    [root@kid ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:tree-1.6.0-10.el7                ################################# [100%]
    
    # 安装vsftpd服务
    [root@kid ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:vsftpd-3.0.2-28.el7              ################################# [100%]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    # 在软件包所在目录下可以不指定绝对路径  
    [root@kid ~]# cd /mnt/Packages/  
    # 安装zsh shell
    [root@kid Packages]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    # 如果软件已经安装, 强制再次安装  
    [root@kid ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm  
    
    • 1
    • 2
    [root@kid ~]# rpm -ivh /mnt/Packages/samba-4.10.16-5.el7.x86_64.rpm 
    # 错误:失败的依赖项:
    error: Failed dependencies:
    	libCHARSET3-samba4.so()(64bit) is needed by samba-0:4.10.16-5.el7.x86_64
    	libCHARSET3-samba4.so(SAMBA_4.10.16)(64bit) 
    	...
    
    # 使用--nodeps可强制安装  (强制安装上了也是废的)
    [root@kid ~]# rpm -ivh --nodeps /mnt/Packages/samba-4.10.16-5.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:samba-0:4.10.16-5.el7            ################################# [100%]
    # 警告:组printadmin不存在-使用root 
    warning: group printadmin does not exist - using root
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    # yum 安装会自动处理依赖  
    [root@kid ~]# yum install samba -y
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    base                                          | 3.6 kB     00:00     
    extras                                        | 2.9 kB     00:00     
    updates                                       | 2.9 kB     00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package samba.x86_64 0:4.10.16-19.el7_9 will be installed
    ...
    
    #  yum卸载
    [root@kid ~]# yum remove samba  -y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    # rpm 从网络地址安装zabbix-agent  
    [root@kid ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm  
    Retrieving https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
    warning: /var/tmp/rpm-tmp.rs3OXj: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zabbix-agent-3.0.9-1.el7         ################################# [100%]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # rpm升级软件 添加-U参数
    [root@kid ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm  
    Retrieving https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm
    warning: /var/tmp/rpm-tmp.ysb7E4: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zabbix-agent-4.2.8-1.el7         ################################# [ 50%]
    Cleaning up / removing...
       2:zabbix-agent-3.0.9-1.el7         ################################# [100%]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 查看rpm安装的软件
    [root@kid ~]# rpm -q zabbix-agent  
    zabbix-agent-4.2.8-1.el7.x86_64
    
    • 1
    • 2
    • 3
    # 卸载(带依赖的卸不了)
    [root@kid ~]# rpm -e zabbix-agent
    
    • 1
    • 2

    3. 查询已安装的rpm包

    选项描述
    rpm -q查看指定软件包是否安装(重点)
    rpm -qa查看系统中已安装的所有RPM软件包列表
    rpm -qi查看指定软件的详细信息
    rpm -ql查询指定软件包所安装的目录、文件列表(重点)
    rpm -qc查询指定软件包的配置文件(只有配置文件, etc下的)
    rpm -qf查询文件或目录属于哪个RPM软件
    rpm -qip查询未安装的rpm包详细信息
    rpm -qlp查询未安装的软件包会产生哪些文件
    # 查询vsftpd这个rpm包是否安装  
    [root@kid ~]#  rpm -q vsftpd  
    vsftpd-3.0.2-28.el7.x86_64
    
    
    • 1
    • 2
    • 3
    • 4
    # 模糊查找系统已安装的rpm包, 带ftp字眼的  
    [root@kid ~]# rpm -qa |grep ftp 
    vsftpd-3.0.2-28.el7.x86_64
    
    
    • 1
    • 2
    • 3
    • 4
    # 查询vsftpd软件包的相关信息  
    [root@kid ~]#  rpm -qi vsftpd  
    Name        : vsftpd
    Version     : 3.0.2
    Release     : 28.el7
    Architecture: x86_64
    Install Date: Mon 05 Sep 2022 12:46:39 PM CST
    Group       : System Environment/Daemons
    Size        : 361231
    License     : GPLv2 with exceptions
    Signature   : RSA/SHA256, Thu 15 Oct 2020 03:02:43 AM CST, Key ID 24c6a8a7f4a80eb5
    Source RPM  : vsftpd-3.0.2-28.el7.src.rpm
    Build Date  : Wed 14 Oct 2020 12:10:57 AM CST
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : https://security.appspot.com/vsftpd.html
    Summary     : Very Secure Ftp Daemon
    Description :
    vsftpd is a Very Secure FTP daemon. It was written completely from
    scratch.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    # 查询rpm包所安装的文件  
    [root@kid ~]#  rpm -ql vsftpd  
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd
    /etc/vsftpd/ftpusers
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    [root@kid ~]# rpm -qc vsftpd  
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 查询配置文件或命令来自于哪个rpm包(只能查已经安装过的)  
    [root@kid ~]# rpm -qf /usr/sbin/vsftpd  
    vsftpd-3.0.2-28.el7.x86_64
    
    [root@kid ~]# rpm -qf /etc/vsftpd/vsftpd.conf
    vsftpd-3.0.2-28.el7.x86_64
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # yum查看未安装的软件信息 (执行yum没有指定版本则下载这个版本)
    [root@kid ~]# yum provides vim  
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    2:vim-enhanced-7.4.629-7.el7.x86_64 : A version of the VIM editor
         ...: which includes recent enhancements
    Repo        : base
    Matched from:
    Provides    : vim = 7.4.629-7.el7
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 查询未安装的软件包会产生哪些文件  
    [root@kid ~]# rpm -qlp /mnt/Packages/samba-4.10.16-5.el7.x86_64.rpm 
    /etc/openldap/schema
    /etc/openldap/schema/samba.schema
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. RPM包升级

    选项描述
    rpm -U如果老版本不存在则全新安装, 如果存在有新版即升级
    # 通过wget命令下载zabbix-agent的两个版本
    [root@kid ~]# wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm 
    ...
    [root@kid ~]# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
    ...
    
    [root@kid ~]# ll
    -rw-r--r--. 1 root root 343120 Apr 25  2017 zabbix-agent-3.0.9-1.el7.x86_64.rpm
    -rw-r--r--. 1 root root 403652 Mar 29  2019 zabbix-agent-4.2.0-1.el7.x86_64.rpm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    # 先安装低版本  
    [root@kid ~]#  rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm  
    warning: zabbix-agent-3.0.9-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zabbix-agent-3.0.9-1.el7         ################################# [100%]
    
              
    # 尝试安装高版本(会出现错误)  
    [root@kid ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm 
    # 警告:zabbix-agent-4.2.0-1.el7.x86_64.rpm:头V4 RSA/SHA512签名,密钥ID a14fe591:NOKEY
    warning: zabbix-agent-4.2.0-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Preparing...                          ################################# [100%]
    # 文件冲突...
    		file /etc/zabbix/zabbix_agentd.conf from install of zabbix-agent-4.2.0-1.el7.x86_64 conflicts with file from package zabbix-agent-3.0.9-1.el7.x86_64
    	file /usr/sbin/zabbix_agentd from install of zabbix-agent-4.2.0-1.el7.x86_64 conflicts with file from package zabbix-agent-3.0.9-1.el7.x86_64
    	
    # 使用升级的方式,完美解决替换  
    [root@kid ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm  
    warning: zabbix-agent-4.2.0-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Preparing...                          ################################# [100%]
    # 更新安装
    Updating / installing...
       1:zabbix-agent-4.2.0-1.el7         ################################# [ 50%]
    # 卸载移除zabbix-agent-3.0.9-1.el7
    Cleaning up / removing...
       2:zabbix-agent-3.0.9-1.el7         ################################# [100%]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    5. RPM包卸载

    卸载包时需要先把依赖的包卸载掉, 如果依赖的包是系统所必须的, 那就不能卸载这个包, 否则会造成系统崩溃.
    
    • 1
    # 先查询, 然后卸载   
    [root@kid ~]#  rpm -qa |grep zsh  
    zsh-5.0.2-34.el7_8.2.x86_64
    
    
    # 卸载
    [root@kid Packages]# rpm -e zsh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6. RPM包校验

    软件相关的数据库存放于 /var/lib/rpm目录
    
    • 1
    参数描述
    S文件的容量大小是否被改变
    M文件的类型或者文件的属性是否被修改
    5MD5 这一种指纹加密的内容已经不同
    L路径已经被改变
    U文件的所属主已被修改
    G文件的所属组已被修改
    T文件的创建时间已被改变
    # 校验已安装的软件包(我执行没反应...)
    [root@kid ~]# rpm -qc vsftpd
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    [root@kid ~]# rpm -V vsftpd
    
    # 应该是
    [root@kid~]# rpm -V vsftpd  
    S.5....T.  c /etc/pam.d/vsftpd  
    .......T.  c /etc/vsftpd/ftpusers  
    S.5....T.  c /etc/vsftpd/vsftpd.conf  
    .M.......    /var/ftp/pub  
    
    # 安装nginx
    [root@kid ~]# yum install -y nginx
    # nginx就可以看, 
    [root@kid ~]# rpm -V nginx
    S.5....T.  c /etc/nginx/nginx.conf
    .M...U...  g /var/log/nginx/access.log
    .M...U...  g /var/log/nginx/error.log
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    ————————————————
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
    ————————————————
    ————————————————
    版权声明:本文为CSDN博主「开局签到Python基础」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_46137324/article/details/126756872

  • 相关阅读:
    「C#」WPF学习笔记-基础类及继承关系
    定时任务管理器(xxl-job)
    【附源码】计算机毕业设计JAVA传统文化知识竞赛系统
    人工神经网络与遗传算法,神经网络和算法的关系
    猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决缓存穿透、缓存雪崩、缓存击穿
    当网络隔离成了必须,跨网文件传输该如何实现?
    大模型引发“暴力计算”,巨头加速推进液冷“降温”
    MySQL系统架构设计
    WaitGroup原理分析
    [补题记录] Atcoder Beginner Contest 295(E)
  • 原文地址:https://blog.csdn.net/qq_46137324/article/details/126770510