阿Q的Linux运维学习之路(day18)-Linux软件管理-rpm

概述

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

rpm包名组成
rpm包名以 - 将软件名称分成了若干部分 :bash-4.2.46-28.el7.x86_64.rpm

bash				软件名称
4.2.46				版本号
28					发布次数
el7					支持硬件平台
x86_64				扩展名,表示适用于64位系统

rpm包获取方法
实际生产环境中都是通过联网的方式获取rpm包。
(不过我们刚开始学习rpm包,建议先使用本地CentOS7的镜像)
我们先通过虚拟机加载镜像,然后在linux中执行 mount /dev/cdrom /mnt,此时你会在/mnt/Packages目录下看到很多rpm的包文件。那么就可以开始rpm包管理之旅。
除使用rpm包安装外,Linux系统还有源码包,二进制包两种安装软件的方式。

使用示例

语法格式:rpm 选项 参数
常用选项:

-i			安装rpm
-v			显示安装详细信息
-h			显示安装rpm进度
--force		强制重新安装
--nodeps	忽略依赖关系安装
  1. rmp包安装

    安装软件包,需要指定软件包绝对路径
    [root@localhost ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
    [root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
    
    在软件包所在目录下可以不指定绝对路径
    [root@localhost ~]# cd /mnt/Packages/ 
    [root@localhost Packages]#rpm -ivh zsh-5.0.2-31.el7.x86_64.rpm
    
    安装互联网上的rpm包(存在依赖关系)
    [root@localhost ~]# rpm -ivh /mnt/Packages/unixODBC-2.3.1-11.el7.x86_64.rpm
    [root@localhost ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
    
    如果软件包已存在,可使用--force强制再次安装
    [root@localhost ~]# rpm -ivh --force /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
    

    使用rpm安装软件的时候,如果软件包有依赖关系,就会很麻烦。
    比如我们使用rpm安装A软件,但A软件依赖了B软件,必须先安装B,才能安装A软件,而B软件又有可能依赖于C软件,以此类推下去就非常的麻烦。
    这个时候我们就可以选择使用yum来安装(yum可以自动处理依赖关系 ,但是yum只负责安装软件,查询软件信息还需要rpm来实现)

  2. rpm包升级
    选项:-U
    rpm -U 参数 (如果老版本不存在则全新安装,如果存在有新版即升级)

    1.下载两个不同版本的zabbix
    [root@localhost ~]# wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
    [root@localhost ~]# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
    
    2.先安装低版本
    [root@localhost ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
    [root@localhost ~]# rpm -qa zabbix-agent		#查询安装好的版本
    zabbix-agent-3.0.9-1.el7.x86_64
        
    3.尝试安装高版本(会出现错误)
    [root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
        
    4.使用升级的方式,完美解决替换
    [root@localhost ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
    [root@localhost ~]# rpm -qa zabbix-agent
    zabbix-agent-4.0.0-2.el7.x86_64				#查询升级后的版本
    
  3. 卸载rpm包(*慎用)
    实际生产环境我们一般不要执行卸载操作,卸载后可能会影响到依赖的软件。

    -e卸载软件包
    [root@localhost ~]# rpm -e zabbix-agent
    卸载后查询软件包是否还存在
    [root@localhost ~]# rpm -qa zabbix-agent	
    
  4. 查询以安装好的rpm软件包

     rpm -q		查看指定软件包是否安装
     rpm -qa	查看系统中已安装的所有RPM软件包列表
     rpm -qi	查看指定软件的详细信息
     rpm -ql	查询指定软件包所安装的目录、文件列表
     rpm -qc	查询指定软件包的配置文件
     rpm -qf	查询文件或目录属于哪个RPM软件
     rpm -qip	查询未安装的rpm包详细信息
     rpm -qlp	查询未安装的软件包会产生哪些文件
    

    示例:

    查询vsftpd这个rpm包是否安装
    [root@localhost ~]# rpm -q vsftpd
    
    查找系统已安装的rpm包
    [root@localhost ~]# rpm -qa zabbix-agent
    
    模糊查找系统已安装的rpm包
    [root@localhost ~]# rpm -qa |grep ftp
    
    查询vsftpd软件包的相关信息
    [root@localhost ~]# rpm -qi vsftpd
    
    查询rpm包所安装的文件
    [root@localhost ~]# rpm -ql vsftpd
    
    查询rpm包相关的配置文件
    [root@localhost ~]# rpm -qc vsftpd
    
    查询配置文件或命令来自于哪个rpm包
    [root@localhost ~]# rpm -qf /etc/vsftpd/vsftpd.conf
    [root@localhost ~]# rpm -qf /usr/sbin/vsftpd
    
    查询未安装的软件包会产生哪些文件
    [root@localhost ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    
    查询未安装的软件包会产生哪些文件
    [root@localhost ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    

    rpm -qf 有一个弊端: 只能查看系统中已经存在的命令和文件,当真正要查询一个系统中不存在的命令,或文件,我们会选择使用 yum provides 去查询

发布了38 篇原创文章 · 获赞 0 · 访问量 583

猜你喜欢

转载自blog.csdn.net/qq_39095114/article/details/105047259