一.yum仓库简介
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。
yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,腾讯云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。这就是网洛源yum。
而本地源yum仓库,是为了在无网络的条件下通过挂载的方式取得系统镜像中的安装包获得,缺点是版本比较老,还有就是在无外网的生产环境中,如果机器较多,比较费时间
而本期所讲的FTP云和HTTP云就是为了解决这个问题,在内网中搭建FTP和HTTP服务,让无数台服务器从一台服务器中获得安装包并且自动解决依赖关系
软件仓库的提供方式:
- 网络源
- FTP服务: ftp://…
- HTTP服务: http://…
- 本地源
- 本地目录: file://…
复制代码
二.yum配置文件
2.1 主配置文件位置
主配置文件位置:/etc/yum.conf
[root@localhost]# /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever //yum下载的RPM包的缓存目录 $basearch代表硬件 $releasever系统版本比如7
keepcache=0 //是否保存缓存 0代表不保存,1代表保存
debuglevel=2 //调试级别了解即可
logfile=/var/log/yum.log // 日志文件位置
exactarch=1 //是否允许不同版本的rpm安装
obsoletes=1 //update 的一个参数是否可以允许旧版本的运行
gpgcheck=1 //验证秘钥
plugins=1 //是否允许插件1代表可以
installonly_limit=5 //保存几个内核 5代表5个
bugtracker_url=http://bugs.centos.org/set_project.phpproject_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
复制代码
2.2 仓库配置文件
位置:/etc/yum.repos.d/*.repo
#下面是默认仓库,是centos官方的yum源,需要联网才可以使用
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
bak CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
复制代码
2.3 日志文件
位置:/var/log/yum.log
[root@localhost yum.repos.d]# cat /var/log/yum.log //查看日志文件
复制代码
三.搭建yum仓库
3.1 http仓库(Apache)
实验目的:
搭建HTTP服务器,修改客户端的yum配置文件,从HTTP服务器获取yum源,从而实现软件包的安装
实验内容:
1.在服务器端安装httpd(Apache)程序并重启。
- 安装
[root@localhost ~]# yum install -y httpd
复制代码
- 重启httpd服务
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]#
复制代码
- 关闭防火墙和selinux
[root@localhost html]# systemctl stop firewalld && setenforce 0
[root@localhost html]#
复制代码
·
2.进入http web默认站点文件夹新建文件夹
默认站点文件夹实在我们用IP地址登录网页是网页获取我们目录和内容的默认渠道,只要把文件目录放在里面,web上就会有显示,客户端就可以通过网页下载
- 进入
/var/www/html/
并新建文件夹
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mkdir centos7
复制代码
3.挂载
上面一部已经新建了centos文件夹,想要获取系统镜像中的安装文件就需要把/dev/sr0
挂载在/var/www/html/centos7/
中
- 挂载
[root@localhost html]# mount /dev/sr0 /var/www/html/centos7
mount: /dev/sr0 写保护,将以只读方式挂载
复制代码
- 查看网页是否建立
4.客户端设置yum获取方式
- 关闭防火墙和selinux
root@localhost ~]# systemctl stop firewalld && setenforce 0
setenforce: SELinux is disabled
复制代码
- 备份repo配置文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv *.repo backup/
复制代码
- 新建http源repo配置文件
5.查看是否可以从服务器端获取yum源
- 随便安装一个软件看是否可以安装成功
3.2 FTP仓库
实验目的:
搭建FTP服务器,修改客户端的yum配置文件,从FTP服务器获取yum源,从而实现软件包的安装(与HTTP类似)
实验内容:
1.在服务器端安装vsftpd
重启服务并配置
[root@localhost html]# yum install -y vsftpd
[root@localhost html]# systemctl restart vsftpd
复制代码
- 关闭两台机器的防火墙
systemctl stop firewalld && setenforce 0
复制代码
2.进入ftp服务的交互文件夹/var/ftp/
并新建centos7,方便挂载
3.修改ftp的配置文件,并挂载
4.进入客户端安装ftp服务并配置yum源文件
[root@localhost ~]# yum install -t ftp
复制代码
- ftp配置文件
- 记得重启yum,并清除缓存
[root@localhost yum.repos.d]# yum clean all && yum makecache
复制代码
5.查看是否能够从ftp服务器上获取安装包并成功安装
四.yum命令详解
4.1 查询软件包命令
#显示可用的安装包
[root@localhost ~]# yum list [软件名]
#显示安装包详细信息
[root@localhost ~]#yum info [软件名]
#根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来
[root@localhost ~]#yum search <关键词>
#你知道某个命令却不知道具体的包可以用此命令查找
[root@localhost ~]#yum whatprovides <关键词>
复制代码
4.2 查询软件包组命令
#安装包组的查询 不加包组名 就是显示所有
[root@localhost ~]#yum grouplist [包组名]
#不加包组名显示全部
[root@localhost ~]# yum groupinfo <包组名>
复制代码
4.3 yum安装升级
#安装软件包
[root@localhost ~]# yum install httpd
#安装包组名
[root@localhost ~]# yum groupinstall gnome desktop
#更新安装包,可以单个也可以全部 后面加具体名称就是单个更新,不加就是全部更新。但是首先你要有更新的包组库否则也无法更新。
[root@localhost yum.repos.d]# yum upgrade
#组包更新
[root@localhost yum.repos.d]# yum groupupdate
复制代码
4.4 软件卸载
#卸载已安装的软件必须加软件名
[root@localhost yum.repos.d]# yum remove httpd(只会卸载主包,并不会删除依赖文件)
#查看历史的使用记录,选择ID 1,2,3,4,5,可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除
[root@localhost yum.repos.d]# yum history
[root@localhost .ssh]# yum history undo 3 //3代表id号
#如果后悔 卸载 可以使用两种方式
复制代码
直接使用yum remove只会删除安装安装文件的主包,依赖文件是不会删除的,这是我们需要使用yum history命令
yum 带有历史记录功能,可以查看过往的事务,重做或回滚这些事务.
在历史中搜索某个软件包是“yum history list XXX“
回滚是 “yum history undo N”
例如我要卸载yum安装的vsftpd则:
yum history list vsftpd
复制代码