概述
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum命令不止能用于下载,它还提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum源-yum仓库
想要成功的使用yum工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯的称之为yum源。(可以是本地仓库、也可以是网络仓库)
简单来说,一个yum源,就是一个网址。这个网址对应的就是一个仓库,这个仓库中有很多的rpm包。加一个源网址,就相当于是在服务器添加一个仓库。
一个源只提供一个仓库,想要使用多个仓库,就需要配置多个源。
Linux必配的yum源:
- base源(基础软件):
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- epel源(第三方软件):
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
后期学习服务需要,我们还可以去服务官方下载官方提供的repo文件。
配置源(添加仓库)的方式
- 手动方式:
手动添加一个 repo 文件 - 自动方式
安装一个 “ release ” 的包,包中提供一个repo的文件
yum仓库相关的指令:
#列出yum源可用的软件仓库
[root@localhost ~]# yum repolist
#列出全部yum源可用和禁用的仓库
[root@localhost ~]# yum repolist all
#查找某个命令或文件属于那个软件包
[root@localhost ~]# yum provides /etc/my.cnf
[root@localhost ~]# yum provides cd
yum安装软件包
使用yum安装软件包
yum通过公网仓库搜索进行安装
[root@localhost ~]# yum install vsftpd #交互模式,比较麻烦
[root@localhost ~]# yum install vsftpd -y #非交互,自动安装
yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
[root@localhost ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm
yum直接安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
[root@localhost ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm
下载一个rpm包到本地之后使用rmp安装和yum安装的区别:
- rpm -ivh 进行安装
安装过程碰到了依赖,需要缺什么找什么,然后安装。 - yum localinstall 进行安装
安装过程碰到了依赖会自动处理依赖,需要什么自动去仓库寻找,然后帮你安装。如果仓库没有则会报错。
使用yum重新安装软件包:
假如我们不小心删除了vsftpd配置文件
[root@localhost ~]# rm -f /etc/vsftpd/vsftpd.conf
可以对软件进行重新安装
[root@localhost ~]# yum reinstall vsftpd
检查软件的配置文件
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
使用yum更新软件包
我们轻易不要进行更新操作,因为有可能A软件包强行依赖于B软件包的1.1版本,假如将B软件包升级成了1.2版本,可能会造成A软件包无法运行。除非某个软件包出现了漏洞必须需要更新时再使用。
对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@localhost ~]# yum check-update
更新acl软件
[root@localhost ~]# yum update acl -y
更新整个系统所有的软件,包括内核(这个操作很危险)
[root@localhost ~]# yum update -y
使用yum删除软件包
[root@localhost ~]# yum install samba -y
[root@localhost ~]# yum erase samba -y
[root@localhost ~]# yum remove samba -y
yum仓库相关指令
查看仓库
查看当前启用(可用)的仓库
[root@localhost ~]# yum repolist
查看所有的仓库(不管是否启用)
[root@localhost ~]# yum repolist all
启用或禁止仓库的方法:
- 找到该仓库的repo文件,将里面的 enable 修改为 0不启用 1启动
- gzip /etc/yum.repos.d/xx.repo 压缩该文件,让该文件失效
查找一个命令或文件所属的软件包
之前学到使用rpm的-qf选项可以查看命令或文件所属的软件包,但是需要知道命令的绝对路径, 如果不存在该命令是无法查找到该命令所属的软件包。
而我们使用yum不需要知道命令的绝对路径,只需要知道命令即可。yum会通过所有已启用的仓库进行查找那些软件包中涵盖了需要查询的命令。
[root@localhost ~]# yum provides cd
[root@localhost ~]# yum provides ifconfig
查询命令来自于哪个软件,使用yum的方式进行查询
- 如果查询不到,检查命令是否写错,如果写错,修改即可.
- 如果修改命令还是查询不到,请检查是否仓库真的没有软件包涵盖此命令, 建议添加更多yum源(仓库)
yum缓存相关指令
开启缓存每次安装完会保留软件的rpm包,不开启的话安装完就会直接清除。
缓存rpm包方式一:
修改yum全局配置文件
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 #1表示启动缓存,0表示关闭缓存
缓存rpm包方式二,只下载不安装:
[root@localhost ~]# yum install -y yum-plugin-downloadonly #插件
[root@localhost ~]# yum install httpd -y --downloadonly --downloaddir=/tmp
清除yum缓存:
清除所有的缓存信息
[root@localhost ~]# yum clean all
清除缓存的软件包
[root@localhost ~]# yum clean packages
yum包组相关指令
包组:
我们此前所安装的软件包都是单一的,包组就是把多个单一的软件包统一到一起,定义一个组,然后我们直接安装包组,就间接性的把组里的所有单个安装包全都安装了。
查看可以安装的包组
[root@localhost ~]# yum groups list
安装一整个包组
[root@localhost ~]# yum groups install Development Tools
删除包组
[root@localhost ~]# yum groups remove -y Base
yum历史记录指令
历史记录history可以查看我们bash的历史操作记录。而yum history可以用来查看我们在yum里面的操作记录。
查看历史执行yum命令
[root@localhost ~]# yum history
查询历史执行yum命令ID详细信息
[root@localhost ~]# yum history info N
撤销历史执行过的yum命令
[root@localhost ~]# yum history undo N
搭建本地yum仓库
-
准备一个iso镜像文件 (它里面有很多的rpm包,可以使用 wget tree )连接上虚拟机
-
挂载我们的光盘至本地的/mnt目录下
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only -
注释掉所有的repo文件,然后自己 新添加一个repo文件 。(配置一个本地yum仓库的源)
[root@localhost ~]# cat /etc/yum.repos.d/oldQ.repo [local-Q] #仓库名称,可随意表示 name = Local Packages #仓库的描述 可通过 yum repolist查看 baseurl = file:///mnt #我们的仓库在那里,使用什么协议访问 。可以使用http:// ftp:// file://等 enabled = 1 #是否启用该仓库 1 表示启动 0表示不启用 gpgcheck = 0 #是否要校验软件包的合法性 ( 0 不校验 )
-
使用yum命令安装软件测试
[root@container ~]# yum remove wget -y [root@container ~]# yum install wget
这样就可以使用我们的本地yum仓库了
如图: