文章目录
- 1 yum 仓库
- 1.1 yum 实现过程
- 2 yum 配置文件
- 2.1 yum主配置文件
- 2.2 仓库设置文件
- 2.3 日志文件
- 3 yum命令详解
- 3.1 查询软件包命令
- 3.2 查询软件包组命令
- 3.3 yum 安装升级
- 3.4 软件卸载
- 4 yum 源的提供方式
- 4.1 配置本地源仓库
- 4.2 搭建阿里云仓库 (http方式外网环境)
- 4.2.1 网络源
- 4.3 内网环境下 http 方式搭建yum仓库
- 4.4 内网环境下 ftp 方式搭建 yum 仓库
- 5 网络文件服务---NFS共享
- 5.1 NFS 特点
- 5.2 NFS 原理
- 5.3 实验步骤
- 5.3.1 具体配置
1 yum 仓库
- yum是一个基于 RPM 包构建的软件更新机制,可以自动解决依赖关系,所有软件包由集中的 YUM 软件仓库提供
- 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为 “源” 服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的 “源” 服务器来安装或更新软件
- yum由仓库和客户端组成,也就是整个 yum 由两部分组成,所以 yum 可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度
1.1 yum 实现过程
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当 yum 客户端利用 yum/dnf 工具进行安装时包时,会自动下载 repodata 中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装
yum依赖于环境,依赖于服务端和客户端,允许跨网络
客户端:配置文件
服务端
- RPM 包(存放在包文件夹 Packages 中)
- 元数据(存放在元数据文件夹 repodata 中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
最终形成两个文件夹 Packages (包文件夹一般取名 packages )和 repodata (元数据文件夹)
仓库类型
光盘的仓库(基本仓库)
epel 扩展仓库
2 yum 配置文件
2.1 yum主配置文件
位置:/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个
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64 $contentdir:表示目录,比如:centos-8,centos-7 $YUM0-$YUM9:自定义变量
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 //查看日志文件
3 yum命令详解
3.1 查询软件包命令
[root@localhost ~]# yum list //查询软件包列表
[root@localhost ~]# yum list installed //查询系统中已安装的软件包
[root@localhost ~]# yum list available //查询仓库中尚未安装的软件包
[root@localhost ~]# yum list updates //查询可以升级版本的软件包
[root@localhost ~]# yum info [软件名] //查询软件包的描述信息
#根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来
[root@localhost ~]# yum search <关键词>
#你知道某个命令却不知道具体的包可以用此命令查找
[root@localhost ~]# yum whatprovides <关键词>
3.2 查询软件包组命令
#安装包组的查询 不加包组名 就是显示所有
[root@localhost ~]#yum grouplist [包组名]
#不加包组名显示全部
[root@localhost ~]# yum groupinfo <包组名>
3.3 yum 安装升级
[root@localhost ~]# yum -y install 软件名 //安装、升级软件包,"-y"选项表示自动确认
[root@localhost ~]# yum -y update 软件名 //升级软件包
[root@localhost ~]# yum groupinstall gnome desktop //安装包组名
#更新安装包,可以单个也可以全部 后面加具体名称就是单个更新,不加就是全部更新。
但是首先你要有更新的包组库否则也无法更新。
[root@localhost yum.repos.d]# yum upgrade
[root@localhost yum.repos.d]# yum groupupdate //组包更新
3.4 软件卸载
[root@localhost ~]# yum -y remove 软件名 //卸载软件包,可自动解决其依赖关系
#查看历史的使用记录,选择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 history redo 4 (重新安装一遍)
yum history undo 6 (反悔卸载等于重新安装一遍)
4 yum 源的提供方式
4.1 配置本地源仓库
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt #把光盘挂载到/mnt目录下(前提虚拟机是光盘挂载)
[root@localhost ~]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/ //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
#新建yum仓库文件
[root@localhost yum.repos.d]# vim local.repo
[local] //仓库类别
name=local //仓库名称
baseurl=file:///mnt //指定URL 访问路径为光盘挂载目录
enabled=1 //开启此yum源,此为默认项,可省略
gpgcheck=0 //不验证软件包的签名
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理yum缓存并更新
[root@localhost yum.repos.d]# yum repolist //检查
4.2 搭建阿里云仓库 (http方式外网环境)
#切换到 yum.repo.d 目录将自带的仓库移走
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/ //将原有的仓库移至 bak 文件夹下
[root@localhost yum.repos.d]# ls
#新建yum仓库
[ali] //阿里云centos yum仓库
name=aliyun
#baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/ //开启哪个都可以正常使用,这边主要解释变量的作用
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ //变量参见主配置文件
gpgcheck=0
[epel] //epel源仓库
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0
[update] //更新包仓库
name=update
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理yum缓存并更新
小火车
[root@localhost yum.repos.d]# yum install -y epel-release
[root@localhost yum.repos.d]# yum install -y sl
[root@localhost yum.repos.d]# sl -a
牛
[root@localhost yum.repos.d]# yum install -y install cowsay
[root@localhost yum.repos.d]# cowsay hello
4.2.1 网络源
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
EPEL的yum源
epel是额外源,有的软件镜像文件里没有,需要增加额外源
先检测本地的源,本地源没有去额外源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
#更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
4.3 内网环境下 http 方式搭建yum仓库
由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考 DHCP 原理与配置)无法连接外部网络如果想要下载 httpd 服务则需要搭建一个本地 yum 仓库
服务端配置
#搭建本地 yum 仓库并下载 httpd 服务
[root@localhost ~]# cd /mnt/ //进入mnt
[root@localhost mnt]# ls //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt //挂载到mnt目录下
[root@localhost mnt]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/ //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim local.repo //新建并编辑local.repo
[local] //仓库类别
name=local //仓库名称
baseurl=file:///mnt //设置链接地址,指定URL 访问路径为光盘挂载目录
gpgcheck=0 //不验证软件包的签名
enabled=1 //开机自启,开启此yum源,此为默认项,可省略
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost yum.repos.d]# yum -y install httpd //安装http服务
#服务端进入/var/www/html/添加挂载目centos7,
#将光驱挂载到centos7目录下(也可以将光驱内的所有文件包复制到centos目录下)
[root@localhost yum.repos.d]# cd /var/www/html/
[root@localhost html]# mkdir centos7
[root@localhost html]# ls
[root@localhost html]# mount /dev/sr0 /var/www/html/centos7/
[root@localhost html]# ls centos7/
#服务端关闭防火墙,开启http服务
[root@localhost html]# systemctl stop firewalld.service
[root@localhost html]# setenforce 0
[root@localhost html]# systemctl start httpd.service
httpd 提供网页服务,所以在客户端搜索服务器IP地址+共享目录(192.168.16.16/centos7)可以查看到共享出去的文件夹 centos7
客户端配置
客户端设为仅主机模式(如何设置仅主机模式可参考DHCP原理与配置)
[root@localhost ~]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/ //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim http.repo //新建并编辑http.repo
[http] //仓库类别
name=http //仓库名称
baseurl=http://192.168.16.16/centos7 //指定设备服务器地址192.168.16.16为服务器地址
gpgcheck=0 //进入不需验证
enabled=1 //开机自启,开启此yum源,此为默认项,可省略
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost html]# systemctl stop firewalld.service
[root@localhost html]# setenforce 0
测试安装一个服务
4.4 内网环境下 ftp 方式搭建 yum 仓库
ftp 可以使用内网也可以使用外网,此处演示内网环境, 由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考 DHCP 原理与配置)无法连接外部网络如果想要下载 ftp 服务则需要搭建一个本地 yum 仓库
服务端:192.168.16.16
客户端:192.168.16.18
服务端配置
#搭建本地 yum 仓库并下载 vsftpd 服务
[root@localhost ~]# cd /mnt/ //进入mnt
[root@localhost mnt]# ls //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt //挂载到mnt目录下
[root@localhost mnt]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/ //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim local.repo //新建并编辑local.repo
[local] //仓库类别
name=local //仓库名称
baseurl=file:///mnt //设置链接地址,指定URL 访问路径为光盘挂载目录
gpgcheck=0 //不验证软件包的签名
enabled=1 //开机自启,开启此yum源,此为默认项,可省略
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost ~]# yum install vsftpd -y //安装vsftpd服务
#服务端进入 /var/ftp/ 目录下添加一个挂载目录
#centos7将光驱挂载到centos7目录下
[root@localhost ~]# cd /var/ftp/ //进入var/ftp目录
[root@localhost ftp]# ls
[root@localhost ftp]# mkdir centos7 //新建挂载目录centos7
[root@localhost ftp]# ls
[root@localhost ftp]# umount /mnt/ //如果之前挂载了,要将原先本地仓库挂载到mnt目录下的镜像解挂
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/ //将镜像挂载到ftp目录下的centos7文件
[root@localhost ftp]# df -h
[root@localhost ftp]# ls centos7/
#服务端关闭防火墙和selinux,开启vsftpd服务
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
客户端配置
由于客户端也是仅主机模式 此处也要搭建本地 yum,可以参照前面搭建 http 仓库步骤,搭建好本地 yum 后下载 ftp 命令客户端下载ftp
客户端测试 ftp 服务是否正常
客户端搭建 yum 仓库
[root@localhost ~]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/ //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
bak
[root@localhost yum.repos.d]# vim ftp.repo//新建并编辑ftp.repo
[ftp]
name=ftp //仓库名
baseurl=ftp://192.168.16.16/centos7 //指定设备服务器地址 指向服务端IP地址
gpgcheck=0 //进入不需验证
enabled=1
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
测试:安装一个服务
5 网络文件服务—NFS共享
NFS(Network File System网络文件服务)是一种基于 TCP/IP 传输的网络文件系统协议,最初由Sun公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。NFS 也是 NAS 存储设备必然支持的一种协议
NAS 存储:NFS 服务的实现依赖于 RPC ( Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 Centos 7系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NES 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
手动加载NFS共享服务时,应该先启动 rpcbind,再启动 NFS。
NFS 端口号:TCP 2049,RPC 端口号:TCP 111
5.1 NFS 特点
- 采用 TCP/IP 传输网络文件
- 安全性低
- 简单易操作
- 适合局域网环境
5.2 NFS 原理
5.3 实验步骤
- 安装 nfs 和 rpcbind 软件
- 修改配置文件设置共享创建共享目录
- 开启服务
- 客户端验证共享目录可访问
5.3.1 具体配置
服务端:192.168.16.16
[root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# setenforce 0
[root@localhost ~]# rpm -q rpcbind nfs-utils //查看软件包
[root@localhost ~]# yum install -y nfs-utils rpcbind //安装nfs-utils与rpcbind软件包
[root@localhost ~]# vim /etc/exports //配置文件 NFS
/opt/share 192.168.16.18/24 (rw,sync,no_root_squash) 网段
格式:共享目录(绝对路径) 客户机地址 (权限)
如 /share * 允许所有主机访问share目录 (权限)
客户机地址可以是主机名、IP 地址、网段地址,也可以是*
rw:表示允许读写
ro:表示为只读
sync:表示同步写入到内存与硬盘中
no_root_squash:表示用户以root身份访问时赋予本地root权限
如果不加,那么客户端无法在里面编辑或写入文件,默认 nfsnobody
root-squash:表示客户机用 root 用户访问该共享目录时,将 root 用户映射成匿名用户
all_squash:所有访问用户都映射为匿名户或用户组(将root用户匿名)
async:将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
subtree_check(默认):若输出目录是一个子目录,则 nfs 服务器将检查其父目录的权限(检查子目录的父目录权限)
no_subtree_check:即使输出目录是一个子目录,nfs 服务器也不检查其父目录的权限,这样可以提高效率
创建 share 目录
[root@localhost ~]# mkdir -p /opt/share
[root@localhost ~]# ls /opt
[root@localhost ~]# systemctl start rpcbind //需要先启动 rpc 服务,因为 nfs 要向 rpc 注册端口
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable rpcbind //开机自启
[root@localhost ~]# systemctl enabled nfs
[root@localhost ~]# netstat -anpu | grep rpc //查看端口
[root@localhost ~]# netstat -anou | gerp nfs
[root@localhost ~]# rpcinfo -p localhost //查看 nfs 向 rpc 注册的端口信息
[root@localhost ~]# exportfs -v //-v显示当前的配置
[root@localhost ~]# exportfs -r //重新加载服务配置
[root@localhost ~]# showmount -e localhost //不加ip地址是本机地址 192.168.16.16 加ip地址是验证共享
客户端:192.168.16.18
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y nfs-utils rpcbind
[root@localhost ~]# showmount -e 192.168.16.16 (服务器地址)//客户端验证共享
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount -t nfs 192.168.16.16:/opt/share /var/www/html //将共享目录挂载到网页目录
[root@localhost ~]# df -h
[root@localhost ~]# systemctl start httpd //启动 httpd 服务
[root@localhost ~]# curl 127.0.0.1 //本机,成功访问主页内容
浏览器访问 192.168.16.18 客户端本地IP地址
测试是否能文件共享
- 服务端
- 客户端
永久性挂载
[root@localhost ~]# vim /etc/fstab
192.168.16.16:/opt/share /var/www.html nfs defaults,_netdev(网络设备) 0 0
注意:NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载
-l 表示解除正在繁忙的文件系统,-f 表示强制。
[root@localhost ~]# systemctl stop nfs //服务器端模拟 nfs 挂掉
[root@localhost ~]# umount /var/www.html //客户端卸载时会卡住
[root@localhost ~]# umount -lf /var/www.html //加lf参数成功卸载