赞
踩
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当 yum 客户端利用 yum/dnf 工具进行安装时包时,会自动下载 repodata 中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装
yum依赖于环境,依赖于服务端和客户端,允许跨网络
客户端:配置文件
服务端
最终形成两个文件夹 Packages (包文件夹一般取名 packages )和 repodata (元数据文件夹)
仓库类型
光盘的仓库(基本仓库)
epel 扩展仓库
位置:/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:自定义变量
位置:/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
位置:/var/log/yum.log
[root@localhost yum.repos.d]# cat /var/log/yum.log //查看日志文件
[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 <关键词>
#安装包组的查询 不加包组名 就是显示所有
[root@localhost ~]#yum grouplist [包组名]
#不加包组名显示全部
[root@localhost ~]# yum groupinfo <包组名>
[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 //组包更新
[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 (反悔卸载等于重新安装一遍)
[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 //检查
#切换到 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
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/
由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考 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
测试安装一个服务
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 //清理缓存建立元数据
测试:安装一个服务
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
服务端: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参数成功卸载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。