rpm管理
什么是rpm
RPM全称RPM Package Manager缩写,由红帽开发用于软件包的安装,升级卸载与查询
为什么要学rpm
就像在windows系统中一样,如果你想要安装一个QQ,安装一个微信,安装一款游戏,首先要去该软件的官网上去下载相关的软件包,通常都是.exe的安装包。还有那种绿色软件包,一下载下来,解压开就能使用无需安装。 那么Linux中也有很多种类的安装包,我们在Linux上也需要安装软件,软件包的种类也有很多,但是最方便,最简单,最简易,速度最快的,也就是rpm包了。 RPM包长啥样呢?
# 用tree的rpm包举例
tree-1.6.0-10.e17.x86_64.rpm
tree # 软件名
1.6.0 # 版本名
10 # 发布次数
e17 # 使用系统版本 (CentOS7,RedHalt7) 向下兼容
x86_64 # 系统平台 64位 32位
rpm # 包后缀名
Linux中软件的安装方式
分类 | 安装 | 版本 |
---|---|---|
rpm包 | 已经编译好的源码包,下载好了之后,直接使用rpm命令管理 | 软件版本偏低 |
源码包 | 先手动编译,将源代码编译成系统能认识的软件,再去安装 | 软件版本随意 |
二进制包 | 解压即可使用, 安装简单(绿色软件:免安装) | 不能修改源码 |
注意:不管是源码包还是二进制包,安装都有可能会有依赖包
RPM软件包的获取途径
1.RedHat光盘或官方网站 (通过挂载的方式访问)
2.RPM查询官网网站
3.Nginx软件官方网站
4.MySQL软件官方网站
光盘获取
光驱绿灯代表加载了本地光驱
# 挂载语法
mount 查看路径 目标路径(可以自己设定)
mount /dev/cdrom /mnt
# 查看挂载信息
df -h
/dev/sr0 4.3G 4.3G 0 100% /mnt
# 卸载挂载
umount 目标路径(挂载时的路径)
umount /mnt
# 卸载挂载的报错
[root@localhost /mnt/Packages]# umount /mnt
umount: /mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
# 报错原因:目前身处目标路径,会导致卸载不掉,目标正忙,离开目录即可
# 挂载光驱报错二:
mount:no medium found on /dev/sr0
# 报错原因:没有加载本地光驱,加载光驱就不会报错了
# 查看rpm包
ll /mnt/Packages
ll 挂载路径下的Packages
rpm命令的使用——安装
rpm [选项] rpm包名
rpm包名
-本地包名 在系统的某个目录下
-远程包名 不用下载,直接使用网站上的rpm包
# 选项
-i 安装
-v 显示过程
-h 显示安装的进度条
--test 仅测试,不安装
--force 强制安装
--nodeps 忽略依赖关系(忽略依赖包)
# --force --nodeps 正常得一起用
# 常用组合
rpm -ivh rpm包名
# 忽略依赖并强制安装
rpm -i --force --nodeps rpm包名
# iv
[root@localhost /mnt/Packages]# rpm -iv
tree-1.6.0-10.el7.x86_64.rpm
Preparing packages...
tree-1.6.0-10.el7.x86_64
# ivh
[root@localhost /mnt/Packages]# rpm -ivh
tree-1.6.0-10.el7.x86_64.rpm
Preparing...
################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7
################################# [100%]
# --test
rpm -ivh --test wget-1.14-18.el7.x86_64.rpm
# 依赖
[root@localhost /mnt/Packages]# rpm -i gcc-
4.8.5-36.el7.x86_64.rpm
error: Failed dependencies:
cpp = 4.8.5-36.el7 is needed by gcc-
4.8.5-36.el7.x86_64
glibc-devel >= 2.2.90-12 is needed by
gcc-4.8.5-36.el7.x86_64
libmpc.so.3()(64bit) is needed by gcc-
4.8.5-36.el7.x86_64
libmpfr.so.4()(64bit) is needed by gcc-
4.8.5-36.el7.x86_64
# 网上下载
rpm -ivh
https://mirrors.aliyun.com/zabbix/zabbix/5.
0/rhel/7/x86_64/zabbix-agent-5.0.1-
1.el7.x86_64.rpm
rpm命令使用——查询
# 语法
rpm 选项 rpm包名
# 选项
-q 查看指定的安装包是否安装
---------------------------# 分割线以下内容都要配合q使用
-a 全部安装过的包
-i 详细信息
-l 列出rpm包相关的配置文件和目录
-c 只查看该软件的包相关的配置文件
-d 只查看该软件的帮助文档文件
-f 反向查找,根据配置文件反向查找安装包
-----------------------------# 以下都需要配合上面选项使用
-p 查询未安装的包的相关信息
#查询vsftpd这个rpm包是否安装
[root@zls ~]# rpm -q vsftpd
#模糊查找系统已安装的rpm包
[root@zls ~]# rpm -qa |grep ftp
#查询vsftpd软件包的相关信息
[root@zls ~]# rpm -qi vsftpd
#查询rpm包所安装的文件
[root@zls ~]# rpm -ql vsftpd
#查询rpm包相关的配置文件
[root@zls ~]# rpm -qc vsftpd
#查询配置文件或命令来自于哪个rpm包
[root@zls ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[root@zls ~]# rpm -qf /usr/sbin/vsftpd
rpm -qc grub2-pc-2.02-0.76.el7.centos.x86_64
rpm -ql grub2-pc-2.02-0.76.el7.centos.x86_64
rpm -qd grub2-pc-2.02-0.76.el7.centos.x86_64
rpm -qf /etc/grub2.cfg
-qip 查询没有安装过包的详细信息
[root@zls ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
-qlp 查询没有安装的包会产生哪些文件
[root@zls ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
-qcp 查询没有安装的包会产生哪些配置文件
-qdp 查询没有安装的包会产生哪些帮助文件
#以上查询只能查询已存在 已安装的包,如果没有安装,需要联网查询
[root@db04 ~]# yum provides zip
[root@db04 ~]# yum provides */ifconfig
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base/filelists_db | 6.4 MB 00:00
epel/filelists_db | 7.9 MB 00:00
extras/filelists_db | 24 kB 00:00
updates/filelists_db | 3.6 MB 00:00
net-tools-1.60-114.el6.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /sbin/ifconfig
rpm命令使用——升级
# 选项
-U update 升级,如果老版本不存在,则会安装新版本,如果老版本存在,会直接升级
-f 老版本必须存在
升级版本:
rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm命令使用——卸载
卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
# 选项
-e 后面接需要卸载包名
# 操作流程
先查询, 然后卸载
[root@zls ~]# rpm -qa |grep sh
[root@zls ~]# rpm -e zsh
AWS 亚马逊