概述
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 忽略依赖关系安装
-
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来实现) -
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 #查询升级后的版本
-
卸载rpm包(*慎用)
实际生产环境我们一般不要执行卸载操作,卸载后可能会影响到依赖的软件。-e卸载软件包 [root@localhost ~]# rpm -e zabbix-agent 卸载后查询软件包是否还存在 [root@localhost ~]# rpm -qa zabbix-agent
-
查询以安装好的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 去查询