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、只需要调整…...

MyBatis整合分页插件PageHelper的使用和说明
MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。而MyBatis PageHelper的出现,则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通…...

情人节专属--HTML制作情人节告白爱心
💕效果展示 💕html展示 <!DOCTYPE html> <html lang="en" > <head>...

带你学C语言-指针(4)
目录 编辑 ⚾0.前言 🏀1.回调函数 ⚽2.qsort 🏉2.1 qsort函数的模拟实现 🎾3.sizeof与strlen对比 🎾4.结束语 ⚾0.前言 言C之言,聊C之识,以C会友,共向远方。各位CSDN的各位你们好啊&…...

ACL访问控制列表
ACL:访问控制列表 在路由器流量进或出接口上,匹配流量产生动作-- 允许 拒绝 (访问限制)定义感兴趣流量--- 匹配流量后,将流量提交给其他的协议进行策略 匹配规则: 至上而下逐一匹配,上条匹配按…...

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)
文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的…...

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B
— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程:《使用 LangChain.js 构建 LLM 应用程序》 大家好,欢迎收看第六期机器学习周刊 本期介绍10个内容,涉及Python、机器学习、大模型等,目录如下ÿ…...

【算法与数据结构】Java实现查找与排序
文章目录 第一部分:查找算法二分查找插值查找分块查找哈希查找树表查找 第二部分:排序算法冒泡排序选择排序插入排序快速排序 总结 第一部分:查找算法 二分查找 也叫做折半查找,属于有序查找算法。 前提条件:数组数据…...

边缘计算的挑战和机遇(结合RDH-EI)
边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我…...

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议_ipsec esp
目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…...

【图论】树的直径
树的直径即为一棵树中距离最远的两点之间的路径 方法一:DFS 先以任意一点为起点跑一遍dfs,记录离起点距离最远的点p(这个点一定是直径的一个端点,感性理解一下不证明了),然后再以最远点再跑一遍dfs&#…...