目录
安装软件包
yum
配置文件
缓存功能操作步骤
创建并配置本地仓库文件
yum相关命令
yum install __
yum repolist
yum list __
yum info __
yum search __
yum whatprovides __
yum remove __
yum -y update __
yum history
yum grouplist
yum groupinstall "__"
部署yum仓库
一. 配置ftp服务器环境
二. 复制软件包和仓库元数据到ftp
三. 配置客户端主机
在http上搭建仓库
一. 配置http服务器环境
二. 测试
三. 客户端实现http仓库
把互联网上的仓库下载到本地
一. 配置环境
二. 创建repodata元数据目录
NFS
一. 配置环境
常见挂载选项
二. 测试
安装软件包
yum -ivh /media/cdrom/Packages/gcc-4.8.5-44.el7.x86_64.rpm
CSDN:在本章实验前,需要使用两台Linux CentOS7的虚拟机,需要两台主机都创建一个最初始的快照用于后续恢复主机状态
yum
用来解决rpm依赖关系的工具
yum:Yellowdog Updater Modified
配置文件
yum服务配置文件的位置:/etc/yum.conf
参数 | 说明 |
cachedir | 缓存目录;当使用yum安装软件包时,所安装的软件包和相关依赖会被缓存起来,这个目录就是安装软件包时保存的指定位置 |
keepcache | 保持缓存;1:开启缓存功能,0:关闭缓存功能 开启缓存功能会把之后缓存的软件包都存储到本地的指定目录 |
debuglevel | 调试信息输出的级别,默认为2 |
logfile | 日志文件的位置 |
exactarch | 在安装软件包时,该软件包架构和系统架构保持一致 |
obsoletes | 在更细软件包时,允许更新一些较为老旧的版本 |
gpgcheck | 是否开启gpg校验规则 |
plugins | 是否允许启用插件 |
installonly_limit | 用几个内核处理程序 |
bugtracker_url | 跟踪错误信息URL |
distroverpkg | 识别软件包的发行版本 |
缓存功能操作步骤
修改配置文件
删除原有仓库替换为阿里的仓库(全部复制粘贴进Xshell)
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装httpd测试
yum -y install httpd
由于开启了缓存功能,所以指定目录也会出现混存文件
c7-media:仓库标识
cd 进 update目录下的packages目录就能看到缓存的软件包了
创建并配置本地仓库文件
在 /etc/yum.repos.d/ 仓库目录下,删除全部原有仓库,自己编写一个仓库文件
yum读取仓库文件时会识别后缀 .repo
自定义仓库文件如下,保存并退出
[example]
name=example
baseurl=file:///media/cdrom
gpgcheck=0
# enabled=1 默认开启
# gpgkey=http://myrepository.example.com/repo/RPM-GPG-KEY-myrepo# [example]: 方括号内的是仓库ID,用于唯一标识这个仓库。
# name: 仓库名称,可以是任何描述性的文本。
# baseurl: 仓库的基础URL,即包含软件包的目录的地址。
# enabled: 表示是否启用此仓库。1表示启用,0表示禁用。默认启用
# gpgcheck: 指定是否检查软件包的GPG签名。1表示检查,0表示不检查。默认启用
# gpgkey: 指定用于验证软件包GPG签名的公钥文件的位置。开启gpg验证时才添加该行
清理仓库缓存并重建仓库缓存
yum相关命令
yum install __
使用 yum install ftp 命令对ftp软件包进行 安装/下载到本地/取消 操作
yum repolist
列出仓库信息
yum list __
查看ftp相关软件包信息
yum info __
查看ftp软件包详细信息
yum search __
模糊查询名称中带有ftp的软件包
yum whatprovides __
精准查询软件包
yum remove __
卸载指定软件包
yum -y update __
更新已有软件包
yum history
查看yum命令历史操作
yum grouplist
显示以组为单位安装的所有组
yum groupinstall "__"
以组的方式安装软件包
桌面环境安装 实验步骤
做当前实验之前如果没有快照需要创建一个快照,因为安装完桌面需要恢复快照做后续实验
确保正确性,复制要安装的组名
粘贴进双引号内
输入 y 回车确认安装
使用 systemctl start graphical.target 命令启动图形界面
返回虚拟机,来到如下图界面,创建用户
设置密码 然后点击右上角前进
配置完成后进入桌面图形化界面
最小化系统后续安装图形化界面后开机自动进入桌面
需要注意的是,如果在一开始安装系统时就选择带有图形化桌面的系统,在开机时自动进入图形化界面终端。
如果在一开始安装时选择的是最小化安装的系统,就算后续安装了图形化界面,在下次开机时还是会进入默认终端而不是图形化桌面
通过设置链接来让 default.target 指向 graphical.target 实现开机自动进入图形化桌面
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
graphical.target:带有图形界面的终端环境
此时再重启就会自动进入桌面环境了
部署yum仓库
在ftp上搭建仓库
一. 配置ftp服务器环境
把所有rpm软件包放到 ftp 上
安装ftp服务器软件包;vsftpd:Very Secure FTP Daemon
进入vsftpd服务的根目录,启动该服务,为了方便实验关闭防火墙
此时在宿主机的资源管理器中通过IP地址访问该虚拟机的 ftp 服务,可以看到pub文件夹对应 /var/ftp 下的 pub目录
二. 复制软件包和仓库元数据到ftp
如果想要实现将光盘中的所有软件包复制到ftp服务器中,需要同时复制光盘挂载目录下的Packages目录和repodata目录
因为repodata目录中存储着仓库中所有软件包的元数据文件,元数据文件包含了软件包的描述、依赖关系等重要信息,帮助包管理工具正确地识别和安装软件包。
当你使用 yum 或 dnf 命令时,就需要用到repodata目录来处理软件包的搜索和解决依赖关系。
拷贝两个目录到ftp服务器存储位置
回到访问ftp的资源管理器可以看到已经拷贝完成
三. 配置客户端主机
打开另一台虚拟机,登入Xshell,打开作为客户端的这台主机的仓库配置文件
将仓库的URL改为FTP的地址
清理仓库缓存
随机安装一个软件包测试能否正常安装
在http上搭建仓库
一. 配置http服务器环境
安装所需软件包
httpd:一个开源的跨平台的 Web 服务器软件,可以用来发布网站和提供 Web 服务
/var/www/html是默认的 HTTP Server 网站根目录,用于存放网站文件和资源。
和ftp操作相似,进入根目录、创建目录、拷贝文件
启动服务,为了方便实验关闭防火墙
二. 测试
在网页中输入服务器对应地址
现在可以通过网页下载软件包
三. 客户端实现http仓库
打开客户端主机的仓库文件
修改URL为对应网址
清理缓存
随机安装软件包测试,就完成了
把互联网上的仓库下载到本地
一. 配置环境
先把仓库替换为阿里提供的镜像仓库,直接粘贴到Xshell输入即可
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装所需软件包
createrepo 是一个用于创建 YUM 软件仓库的工具,可以将一组 RPM 软件包整理成 YUM 软件仓库所需的索引数据和元数据
yum-utils 是一组 YUM 工具的集合,提供了许多有用的命令和功能,用于增强和扩展 YUM 包管理器的功能
列出仓库信息,可以看到仓库中有4个仓库
进入/opt目录,同步仓库中指定的仓库。为了方便实验,所用仓库下载几个就可以Ctrl + C 取消下载
此时就可以看到下载的仓库目录
二. 创建repodata元数据目录
进入base仓库目录,可以看到只有Packages目录,而缺少repodata目录
使用createrepo 指向包路径;来创建元数据目录
由于实验时下载的软件包的时候没有下载完整,所以生成元数据目录时可能会出现报错ERROR的情况,是正常情况。
在仓库居多的情况下,可以直接在/opt下使用createrepo命令,通过整个仓库的软件包生成元数据
使用的前提是,4个目录的位置要固定在同一级,不能分开存放
试验完成,测试:比如将仓库文件拷贝至ftp服务器目录下实现在ftp上部署仓库
NFS
NFS(Network File System)是一种在计算机网络上共享文件的文件系统。它允许在不同的计算机系统之间通过网络访问文件和目录,就像它们本地存在一样。
安全性低,无法解决单点故障
实验步骤
一. 配置环境
先恢复101主机系统快照,进入Xshell,关闭防火墙、内核安全机制,安装所需软件包(nfs-utils、rpcbind)
- nfs-utils 包含了与 NFS 相关的工具和服务,使得系统能够充当 NFS 服务器或客户端。
- rpcbind 是一个用来管理 Unix 系统中远程过程调用(RPC)服务注册的守护进程。NFS 使用 RPC 机制来处理文件共享请求。
- rpcbind 需要在 NFS 服务器和客户端上运行,以便正确地映射和管理 RPC 服务请求。
在根目录下创建一个挂载用的目录(/share),用vim编辑器编辑 指定要共享的目录以及访问权限 的文件
如下图所示,指定共享目录,指定访问主机或网段,自定义挂载选项
常见挂载选项
选项 | 说明 |
rw | 读写权限 |
ro | 只读权限 |
sync | 同步;服务器端在向客户端发送数据时,会等待客户端确认数据已经被接收并写入到磁盘之后才会继续操作。数据会同步写入到磁盘,确保了数据的持久性和一致性,性能低,因为需要等待确认。 |
async | 异步;服务器端在向客户端发送数据时,不会等待客户端的确认,而是会将数据缓存到内存中,然后立即继续其他操作。提高了性能,因为不需要等待确认,但在系统崩溃或网络故障时可能会导致数据丢失,因为数据可能尚未写入磁盘。 |
no_root_squash | 允许客户端使用 root 用户访问共享目录。如果没有这个选项,root 用户对文件的操作权限将被降级为 nfsnobody 用户。 |
root_squash | 默认选项,表示将 root 用户的权限降级为 nfsnobody 用户。 |
all_squash | 将所有用户的权限都映射为 nfsnobody 用户。 |
subtree_check | 默认选项,检查共享目录的父目录权限。 |
no_subtree_check | 不检查共享目录的父目录权限,可以提高性能。 |
二. 测试
开启所需服务
使用 exportfs -vr命令查看共享目录
恢复第二台102虚拟机快照并启动操作
因为要使用nfs提供的文件系统,所以客户端也需要安装nfs-utils软件包
挂载101主机的目录到根目录下的mnt目录,然后使用df命令查看挂载是否成功
cd到挂载的目录下,创建一个文件
回到101主机,查看/share目录下,可以看到从102主机创建的文件,并且是root权限,因为在配置时添加了no_root_squash选项
相反,在101主机服务端创建的文件在102主机客户端也能看到
来到102客户端主机操作
如果此时创建一个用户
用创建的用户登录102主机,在挂载的/mnt目录下是没有权限的
此时使用 ll 命令查看根目录信息
可以看到 /mnt 目录的权限都是root,对于其他用户只有读的权限
回到101主机
修改 /share目录的权限为777
再查看102主机 的mnt目录的权限就变了
在mnt目录内创建一个文件,使用 ll 命令,权限都是zhangsan
查看存储用户信息的文件
可以看到zhangsan这个用户的uid和gid都是1000
再来到101主机 该文件的权限uid和gid也都是1000
通过 cat /etc/passwd 知道101主机上并没有uid和gid为1000的信息条目
如果此时为101服务端主机创建一个用户
此时查看/share目录就会变成属主和属组就变成 lisi 了
由此可见,因为nfs是网络文件系统,是跨主机共享的,所以 NFS 使用的是 UID(用户标识符)和 GID(组标识符)来管理文件的权限和所有权。