YUM
YUM简介
CentOS使用yum和dnf 解决rpm的包依赖关系。
YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS 8 使用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的。
yum工作原理
yum依赖于环境,依赖于服务端和客户端,允许跨网络。
Yum基于C/S模式:
- yum 服务器存放rpm包和相关包的元数据
- yum客户端访问yum服务器进行安装或查询等
Yum实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。 服务器(RPM包和元数据缺一不可):
- RPM包 (存放在包文件夹Packages中)
- 元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
[root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt/目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# ls /mnt //查看光盘内的包文件夹和元数据文件夹 CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
yum客户端配置
yum客户端配置文件
/etc/yum.conf #为所有仓库提供公共配置 /etc/yum.repos.d/*.repo #每个仓库的配置文件 复制代码
yum主配置文件
位置:/etc/yum.conf
[root@localhost ~]# vim /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever //yum下载的RPM包的缓存目录 keepcache=0 //是否保存缓存 0代表不保存,1代表保存 debuglevel=2 //调试级别(0-10),默认为2 logfile=/var/log/yum.log //日志文件位置 exactarch=1 //是否允许不同版本的rpm安装 obsoletes=1//这是一个update的参数,是否允许旧版本的运行 gpgcheck=1 //是否验证GPG(GNU Private Guard)密钥,1表示验证 plugins=1 //是否允许插件,1代表允许 installonly_limit=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仓库配置文件
2.2.1 仓库配置文件说明
位置:/etc/yum.repos.d/*.repo
系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。
[root@localhost ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo [root@localhost ~]# vim jlx.repo //yum仓库配置文件格式 [jlx] name=jlx //设置名称 baseurl=file:///mnt //设置链接地址,file://是本地源的固定格式 enabled=1 //开启此yum源 gpgcheck=0 //是否验证公钥,0表示无需验证
yum仓库配置文件中baseurl的几种形式:
# 本地源 本地目录 file:// # FTP源 FTP服务 ftp:// # 网络源 http:// https://
yum命令详解
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum whatprovides | \ | 精确查找 |
yum install | \ | 安装具体软件包 |
yum remove | \ | 卸载具体软件 |
包组:
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum groupremove | \ | 卸载具体包组软件 |
yum仓库搭建方式
软件仓库的提供方式:
- 本地目录:file://绝对路径
- FTP服务:ftp://ip地址/站点里的路径
- HTTP服务:http://域名或者ip地址/站点里的路径
搭建本地yum仓库
搭建步骤:
步骤1、挂载光盘(/dev/sr0或/dev/cdrom都可以,/dev/cdrom是/dev/sr0的软链接)
[root@localhost ~]# mount /dev/sr0 /mnt/ //将光盘挂载到/mnt目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# df -Th //查看挂载是否成功 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 37G 3.9G 34G 11% / devtmpfs devtmpfs 897M 0 897M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 9.1M 903M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 179M 836M 18% /boot tmpfs tmpfs 183M 4.0K 183M 1% /run/user/42 tmpfs tmpfs 183M 44K 183M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载需要修改配置文件/etc/fstab。
步骤2、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo CentOS-CR.repo CentOS-Media.repo CentOS-Debuginfo.repo CentOS-Sources.repo [root@localhost yum.repos.d]# mkdir bak [root@localhost yum.repos.d]# mv *.repo bak [root@localhost yum.repos.d]# ls bak
步骤3、新建yum仓库文件。
name=local //设置名称 baseurl=file:///mnt //设置链接地址,file://是固定格式,指向/mnt enable=1 //开启此yum源 gpgcheck=0 //无需验证公钥
步骤4、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all //清理yum缓存 [root@localhost yum.repos.d]# yum makecache //重新建立元数据 [root@localhost yum.repos.d]# yum list //查看可安装的软件列表 [root@localhost yum.repos.d]# yum install dhcp -y //yum安装dhcp测试是否成功
搭建阿里云仓库(http方式外网环境)
默认的仓库文件是国外云仓库,速度比较慢,可以使用阿里云仓库代替。
操作步骤:
步骤1、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mv *.repo bak/ [root@localhost yum.repos.d]# ls bak
步骤2、新建阿里云仓库。
[root@localhost yum.repos.d]# vim aly.repo [aly] 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
步骤3、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all //清理yum缓存 [root@localhost yum.repos.d]# yum makecache //重新建立元数据 [root@localhost yum.repos.d]# yum list //查看可安装的软件列表 [root@localhost yum.repos.d]# yum install tree -y //yum安装tree测试是否成功
使用命令方式生成仓库文件
命令格式:
wget -O /etc/yum.repos.d/name.repo(自定义以repo结尾的文件名) 源路径
wget 命令配置阿里云仓库:
wget -O /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Cento
载依赖包到本地(但不安装)
当内网的一台主机安装某个软件包却缺少依赖包时,可以先由一台可连接外网的服务器下载依赖包,之后共享给这台主机。
这时可以使用“yum install --downloadonly”命令,该命令可以仅下载所需软件及其依赖包、而不安装软件,大大减少了无外网安装时找依赖包的问题。命令格式如下:
yum install --downloadonly +软件名称 --downloaddir=指定rpm包存放路径 复制代码
例如,下载nginx所需要的依赖包到/mnt/nginx目录内:
yum install nginx --downloadonly --downloaddir=/mnt/nginx
NFS
简介
NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。
在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
NFS的特点:
- 采用TCP/IP传输网络文件
- 安全性低
- 简单易操作
- 适合局域网环境
NFS优势:
节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。
NFS共享存储服务的操作步骤
实验环境:
服务端:192.168.19.20
客户端:192.168.19.10
实验步骤:
1、服务端设置:
1.关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 2.安装nfs-utils和rpcbind软件包 [root@localhost ~]# yum install nfs-utils rpcbind -y 3.新建共享目录,在目录内创建文件 [root@localhost ~]# mkdir /share [root@localhost ~]# touch /share/1.txt 4.编辑nfs配置文件 [root@localhost ~]# vim /etc/exports /share 192.168.72.0/24 5.启动两个服务,查看详细的nfs信息 [root@localhost ~]# systemctl start nfs [root@localhost ~]# systemctl start rpcbind [root@localhost ~]# showmount -e //查看本机发布的NFS共享目录 Export list for localhost.localdomain: /share 192.168.19.0/24 [root@localhost ~]# exportfs -v //查看NFS共享目录的详细信息 /share 192.168.19.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
2、客户端设置:
1.检查nfs-utils和rpcbind两个软件是否已安装。 [root@localhost ~]# rpm -q rpcbind rpcbind-0.2.0-42.el7.x86_64 [root@localhost ~]# rpm -q nfs-utils nfs-utils-1.3.0-0.48.el7.x86_64 2.将服务端的共享目录/share,挂载到本地的/mnt目录下。 [root@localhost ~]# mount 192.168.19.20:/share /mnt [root@localhost ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 39G 4.9G 34G 13% / devtmpfs devtmpfs 897M 0 897M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 9.1M 903M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 179M 836M 18% /boot /dev/mapper/centos-home xfs 19G 37M 19G 1% /home tmpfs tmpfs 183M 32K 183M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 192.168.19.20:/share nfs4 37G 4.6G 33G 13% /mnt 3.查看共享目录内的文件 [root@localhost ~]# ls /mnt/ 1.txt
3、测试在服务端的共享目录中新建文件f2,观察客户端能否查看到
1.服务端,在/share目录中新建文件f2 [root@localhost ~]# cd /share/ [root@localhost share]# touch 222 [root@localhost share]# ls 1.txt 222 2.客户端,查看共享目录挂载点内的文件 [root@localhost ~]# ls /mnt/ 1.txt 222
补充
-
启动服务后,可以使用 "ss -ntuap | grep 111" 命令查看端口是否已开启,以便确认服务是否正常启动了。
-
使用mount命令只是临时挂载,如果想要将NFS共享目录永久挂载到本地,需要修改配置文件/etc/fstab。挂载参数为:defaults,_netdev。
-
但如果在本机配置文件/etc/fstab中写入了永久挂载,之后服务端取消了对本机的NFS共享,那么本机重启时会出现 “CRTL-D” 报错,此时需要进入但用户模式,编辑/etc/fstab,将NFS共享目录的挂载信息删除。
-
强制卸载 NFS:umount -lf 挂载设备/挂载点
-
如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。这个时候直接使用umount 命令是无法直接卸载的,需要加上 -lf 选项才能卸载。
-
NFS服务端口号2049 rpcbind端口号111
总结
-
nfs 共享存储服务
nfs 不是存储设备 -
由于nfs 没有认证机制,并且是明文传输,所以安全性较差,一般在局域网环境使用
-
sync 写入数据会同时写入内存和硬盘(保证数据的安全,不会丢失,写入会受到硬件性能IO影响,可能会影响读写速度)
-
async 写入数据会在写到内存的缓存区里,然后根据系统的同步策略再刷新到硬盘中