一.yum简介
1.1 yum简介
yum,全称"Yellow dog Updater, Modified",是一个专门为了解决包的依赖关系而存在的软件包管理器。类似于windows系统的中电脑软件关键,可以一键下载,一键安装和卸载。yum 是改进型的 RPM 软件管理器,它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。
1.2 yum实现过程
1.光驱里自带 挂载提供软件包
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
2. yum需要依赖于环境,依赖于服务端和客户端,允许跨网络
服务器:
-
RPM包 (Packages文件夹中)
-
元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)
客户端的配置文件
baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录
最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
仓库类型:
-
光盘的仓库基本仓库 比较常用的
-
epel扩展仓库 比较新
1.3 如何实现安装服务
元信息是一个文件 里面记录了安装包的路径 安装包的依赖关系
- 客户端根据配置文件找到服务端
- 客户端将元信息下载到本地仓库(元信息:安装包的位置,以及安装的依赖关系)
- 根据元信息去下载对应的安装包到本地后,然后安装
- 安装完成后再删除安装包
二.yum配置文件及命令
1. yum 配置文件
1.1 主配置文件
主配置文件 :/etc/yum.conf
[root@localhost]#vim /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.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
yum的repo配置文件中可用的变量:
$basearch:系统基础平台;i386, x86_64
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量
1.2 仓库设置位置
yum仓库文件位置:/etc/yum.repos.d/*.repo
1.3 日志文件
日志文件位置:/var/log/yum.log
2. yum命令解释
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum install | \ | 安装具体软件包 |
yum groupinstall | \ | 安装具体软件包组 |
yum update | 所有软件升级 | 具体软件升级 |
yum group update | 所有包组升级 | 所有包组升级 |
yum remove | \ | 卸载具体软件 |
yum groupremove | \ | 卸载具体包组软件 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
① 软件查询
2.1 yum list [软件名]
显示可用的安装包
2.2 yum info [软件名]
显示安装包的详细信息
2.3 yum search <关键字>
根据关键字查找软件安装包
2.4 yum provides <关键字>
想知道某个命令却不知道具体的包用此命令查找
必须要写路径
2.5 yum grouplist [包组名]
安装包组的查询 不加包组名就是显示所有(此处例子由于安装了中文环境,无法显示英文包组名称无法直接复制中文使用,建议直接安装英文操作系统)
2.6 yum groupinfo <包组名>
显示具体的包组的具体信息
② 安装升级
2.7 yum install [软件名]
安装软件包
2.8 yum groupinstall <包组名>
安装具体软件包组
2.9 yum update
更新包组,可以单个也可以全部 后面加具体包组名称就是单个更新,不加就是全部更新。
2.10 yum groupupdate
组包更新和单个安装包更新
③ 软件卸载
2.11 yum remove <软件名>
卸载已安装的软件必须加软件名
2.12 yum groupremove <包组名>
2.13 yum history
查看历史的使用记录
2.14 yum history undo
加入序号卸载序号里安装的软件
可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除
2.15 yum history redo
加入序号重新执行序号里的操作
如果后悔卸载可以使用两种方式
yum history redo 4 (重新安装一遍)
yum history undo 4 (反悔卸载等于重新安装一遍)
3. 搭建仓库的方式
软件仓库的提供方式
FTP服务:ftp://ip地址/站点里路径
HTTP服务:http://域名或者ip地址/站点里的路径
本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)
3.1 搭建本地yum仓库
① 首先将光驱中的镜像文件进行挂载
② 切换到yum.repo.d 目录下,将自带的仓库移走,因为多个开启仓库文件可能会造成冲突
③ 新建yum仓库文件
④ 测试
3.2 搭建阿里云仓库
(http方式外网环境)
不想搭了,放个牛
娱乐:
3.3 ftp方式搭建云仓库
服务端:
客户端:
客户端测试:
3.4 http 方式搭建
服务端:
客户端:
测试:
4.一些操作
4.1 误将rpm软件删除
进入急救模式
1 继续
切根
重启就可以重新安装回来
4.2 自行打包后建立元数据
实验目的:如果想将自己研发的软件上线可以本地安装,需要配置一个本地元,需要打包安装包和配置元信息
这里使用tree作为案例
① 将tree的安装包打包到一个文件夹
② 生成元信息
createrepo -v /data/test/ ##在/data/test/ 生成元信息
③ 在/data/test/ 查看 有安装软件不可缺少的两项 安装包和元数据
④ 移走之前网络元,搭建本地元,自建yum 仓库
⑤ 清理缓存,重新下载元数据
4.3 将 epl 源下载到本地使用
① 下载额外元
[root@localhost ~]#yum install epel-release -y
#安装epel源 生成epel仓库文件
② 同步 epl 元到指定文件夹
[root@localhost ~]# reposync -r epel -p /root/
#下载同步epel源 根据epel仓库文件去找目录
③ 现在只有安装包,还需要建立元数据,先安装建立元数据的命令
[root@localhost ~]# yum -y install createrepo
#安装建立元数据命令
④ 建立元数据
[root@localhost ~]# createrepo -v /root/epel
#建立元数据 软件目录 依赖关系
4.4 离线安装软件
实验目的:客户机没有任何网 ,服务机只下载不安装,再把安装包一个一个拷给客户机
[root@localhost yum.repos.d]# yum install tree --downloadonly --downloaddir=/opt/
--downloadonly #只下载相关包默认至某一目录
--downloaddir=绝对目录路径 #下载到某一目录
4.5 升级内核
① 安装 https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
② 找到元位置,并修改元配置文件
③ 找到内核软件包
④ 查看版本内核
⑤ 升级内核
⑥ 升级内核后,并不会覆盖原来的内核
三.网络文件服务------NFS
1.NFS简介
NFS(Network File System 网络文件服务)
-
NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。
-
通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源
-
特点:
-
采用TCP/IP传输网络文件
-
安全性低
-
简单易操作
-
适合局域网环境
-
2.NFS原理
NFS优势:节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。
3.NFS软件介绍
软件包:nfs-utils(包括服务器端和客户端)
相关软件包:rpcbind(必须)
nfs端口号不固定 RPC端口号111
rpc UDP协议 远程过程调用
NFS服务主要进程:
-
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
-
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
-
rpc.lockd 非必要,管理文件锁,避免同时写出错
-
rpc.statd 非必要,检查文件一致性,可修复文件
日志位置: /var/lib/nfs/
NFS配置文件:
/etc/exports
/etc/exports.d/*.exports
4. NFS共享配置文件
文件格式:
共享目录 可以访问的主机地址(权限)
/share *()
服务器端:
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
#安装软件包
[root@localhost ~]# yum install nfs-utils.x86_64 rpcbind -y
#新建共享目录
[root@localhost ~]# mkdir /share
[root@localhost ~]# cd /share/
#修改权限
[root@localhost share]# chmod -R 777 /share/
#编辑配置文件
[root@localhost share]# vim /etc/exports
/share *
/share 192.168.91.0/24(rw,sync,no_root_squash)
#共享目录 网段 读写,同步,无root权限
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
#查看详细的nfs信息
[root@localhost share]#exportfs -v
#重读配置文件
[root@localhost share]#exportfs -r
#查看本机发布的 NFS 共享目录
[root@localhost ~]# showmount -e
客户端:
#挂载服务器至本地文件夹
[root@localhost ~]# mount 192.168.44.20:/share /mnt
#查看是否挂载成功
[root@localhost ~]# df -Th
测试:
#服务器端在共享文件夹下创建目录
[root@localhost share]# cd /share/
[root@localhost share]# touch xyl.txt
#在客户端的挂载目录下查看是否成功看到文件
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
xyl.txt
操作:
服务端:
客户端:
测试:
权限问题:
客户端
服务端增加读写权限
服务端查看
因为客户端使用root用户访问时,映射为服务端的匿名用户
如何创建文件属主为root用户?
添加权限
此时想修改后的配置文件生效,又不想让正在操作的用户断开连接,就需要使用exprotfs -r 命令来刷新配置文件
|-----------------------|----------------------------------------------------|
| rw | 表示允许读写,ro 表示为只读 |
| sync | 表示同步写入到内存与硬盘中 |
| no_root_squash | 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash) |
| root_squash | 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户 |
| all_squash | 所有访问用户都映射为匿名用户或用户组 |
| async | 将数据先保存在内存缓冲区中,必要时才写入磁盘 |
| subtree_check(默认) | 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限 |
| no_subtree_check | 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率 |
| anonuid和anongid | 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用 |
如何将客户端新建文件都指定一个用户,需要设置anonuid 和 anongid
指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
现在服务端上新建一个用户并指定uid号
修改服务端的配置文件,并刷新使其生效
此时去客户端创建文件
但是服务端查看发现,文件属主就是指定用户
5. exportfs 用于管理NFS导出的文件系统
选项:
|-----|--------------|
| 选项 | 说明 |
| -v | 查看本机所有NFS共享 |
| -r | 重读配置文件,并共享目录 |
| -a | 输出本机所有的共享 |
| -au | 停止本机所有共享 |
6. showmount 显示NFS服务器加载的信息
|----|---------------|
| -e | 显示服务器上所有的共享目录 |
7.mount.nfs
NFS 相关的挂载选项
fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft #非持续请求
intr #和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络连接不挂载
vers #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
mount -o 临时挂载
在 /etc/fstab 里面开机挂载
8 . 搭建一台NFS共享服务器
实验准备
|--------|---------------|
| NFS服务端 | 192.168.44.20 |
| NFS客户端 | 192.168.44.10 |
| NFS客户端 | 192.168.44.30 |
步骤:
① 关闭防火墙和防护
② 服务端配置
先开启NFS服务
创建共享文件
写一点东西供客户端读取
给文件夹拉满权限,方便后续操作,配置完刷新配置文件
③ 客户端
在客户端下载并开启httpd服务,然后挂载使用
去浏览器访问这两个网址会得到相同的NFS服务器上的信息