Linux中的yum源仓库和NFS文件共享服务
一.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-releaseyum的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服务器上的信息
相关文章:

Linux中的yum源仓库和NFS文件共享服务
一.yum简介 1.1 yum简介 yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。类似于windows系统的中电脑软件关键,可以一键下载,一键安装和卸载。yum 是改进型的 RPM 软件管理器&am…...
【LeetCode2744】最大字符串配对数目
1、题目描述 【题目链接】 标签:数组,哈希表,字符串,模拟 给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以…...

安全加速SCDN是什么
安全加速SCDN(Secure Content Delivery Network,SCDN) 是集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案。已使用内容分发网络(CDN)或全站加速网络(ECDN)的用户&…...

Android 布局菜鸟 android中的布局类型和特点?
一、LinearLayout(线性布局) 1、 特点: 主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。 2、适⽤场景: Android开发中最常见的 ⼀种布局⽅式,排列…...
2023总结与2024寒假计划
王泽政 2023 的总结 学习总结 关于 2023 学习总体上来讲,2023 学的东西还是不少的,有对技术栈广度的扩展,也有对计算机深度的挖掘。 学习内容总结: 学习 React 学习浏览器渲染原理 学习计算机网络 学习 Next.js 学习 Nest.…...

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx
第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发:传统开发模式 前后端分离开发:当前最为主流的开发模式 页面原型需求案例:分析出接口文档 离线开发文档示例: 2、YAPI(官网已停用) 202…...

如何给新华网投稿发稿?新华网的媒体发稿方法步骤
现如今,互联网已经成为了人们获取信息的主要途径,各大媒体网站也成为了发布自己作品的首选平台。其中,新华网作为中国最具影响力的新闻媒体之一,其内容覆盖面广、触及人群众多,因此,能够在新华网上发表文章…...

为什么 macOS 比 Windows 稳定?
在计算机操作系统领域,macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体,但在稳定性和用户体验方面,macOS 常常被认为优于 Windows。那么,为什么 macOS 比 Windows 更稳定呢? 我们…...

从matlab的fig图像文件中提取数据
这里用的是openfig()函数打开的fig文件 →→→【matlab 中 fig 数据提取】 很简洁 →→→【MATLAB提取 .fig 文件中的数据】 这个给出了包含多个曲线的情况 →→→【提取matlab fig文件里的数据和legend】 chatgpt给出的方法 打开fig文件并保存数据 我的…...

基于网络爬虫的微博热点分析,包括文本分析和主题分析
基于Python的网络爬虫的微博热点分析是一项技术上具有挑战性的任务。我们使用requests库来获取微博热点数据,并使用pandas对数据进行处理和分析。为了更好地理解微博热点话题,我们采用LDA主题分析方法,结合jieba分词工具将文本分割成有意义的…...
前端图片转base64 方法
在uni-app、Vue.js或其他前端框架中,将图片转换为Base64编码的过程是相似的。以下是一个简单的示例,说明如何在这些环境中使用JavaScript将图片转换为Base64编码。 1. HTML部分 首先,你需要在HTML中放置一个文件输入元素,用于选…...
Go语言数据结构(一)双向链表
list容器 Go语言中list容器定义在"container/list"包中,实现了一个双向链表。本文第一部分总结源码包中的方法,第二部分展示使用list包的常见示例用法以及刷题时的用法。 食用指南:先看第二部分的常用示例用法然后再用到时在第一部…...
【MySql】MySQL 如何创建新用户
具体代码与实现方法 登录 MySQL: 使用 root 用户或具有相应权限的用户登录到 MySQL。可以使用以下命令: mysql -u root -p这里 -u 后面跟的是用户名,-p 表示提示输入密码。 创建新用户: 使用以下 SQL 命令创建新用户:…...
【DFS】200.岛屿数量
题目 法1:DFS 最简单的DFS必须掌握!!! class Solution {public int numIslands(char[][] grid) {int m grid.length, n grid[0].length, ans 0;if (m 0 || n 0) {return ans;}boolean[][] visited new boolean[m][n];for…...
Vue动态添加新的属性到实例上(vue的问题)
当我们去看vue文档的时候,发现如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。比如我们我们开始创建了一个对象实例,在实例创建之后为其增加新的属性,我们发现这个属性不能生效,此时需要使用this.$set()方法。 &…...

HarmonyOS应用开发者高级认证
一、判断题 云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用(错) 在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式,justifycontent用于设置子组件在交叉轴…...
设计模式复盘
一、背景 在项目中,对于单据的扩展是基于类似于接口扩展实现的。从业务横行来看,业务有A、B、C;从纵向来看,单个业务逻辑编排也可以划分为基础数据查询,决策判断,逻辑执行三大块。 单据扩展:平…...

电力能源三维可视化合集 | 图扑数字孪生
电力能源是现代社会发展和运行的基石,渗透于工业、商业、农业、家庭生活等方方面面,它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎,助力现代化的电力能源数字孪生场景…...

What is `@Repository` does?
Repository 是Spring注解,标识数据访问层组件(DAO, Data Access Object) 当一个类被标记为 Repository 时: 1、组件扫描与自动代理: Spring通过组件扫描(Component Scan)机制发现带有 Reposit…...

c# 自定义 滑块TrackBar
辛苦半天做出来的,如果觉得好用,记得点赞 效果图如下: 具体操作: 1 、添加代码(代码在下面),重新生成下整个工程,在工具栏中就出现控件,将控件拖到窗体中 2、只需要调整…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...