yum仓库及NFS共享

发布时间 2023-08-07 23:29:46作者: Bacolate

yum仓库及NFS共享

1、yum简介

yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间

yum需要依赖于环境,依赖于服务端和客户端,允许跨网络

服务器:

  • RPM包 (Packages文件夹中)

  • 元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)

最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)

仓库类型:

  • 光盘的仓库基本仓库 比较常用的

  • epel扩展仓库 比较新

客户端的配置文件中

baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录

2、yum配置文件及命令

2.1 yum配置文件

2.1.1 主配置文件

位置:/etc/yum.conf //主配置文件

 [root@31yml ~]# /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配置文件中可用的变量:
 $releasever: 当前OS的发行版的主版本号,如:876
 $arch: CPU架构,如:aarch64, i586, i686,x86_64等
 $basearch:系统基础平台;i386, x86_64
 $contentdir:表示目录,比如:centos-8,centos-7
 $YUM0-$YUM9:自定义变量

 

2.1.2 仓库设置文件

位置:/etc/yum.repos.d/*.repo //yum仓库文件位置

例子里是默认的yum仓库 是centos官方的yum源,需要联网才可以使用

软件仓库提供方式

 [root@localhost yum.repos.d]# ls /etc/yum.repos.d/
 bak               CentOS-Debuginfo.repo  CentOS-Sources.repo
 CentOS-Base.repo  CentOS-fasttrack.repo  CentOS-Vault.repo
 CentOS-CR.repo    CentOS-Media.repo

 

2.1.3 日志文件

位置:/var/log/yum.log //日志文件

 [root@31yml ~]#cat /var/log/yum.log
 Aug 03 21:51:34 Updated: 12:dhcp-libs-4.2.5-83.el7.centos.1.x86_64
 Aug 03 21:51:34 Updated: 12:dhcp-common-4.2.5-83.el7.centos.1.x86_64
 Aug 03 21:51:34 Installed: 32:bind-export-libs-9.11.4-26.P2.el7_9.13.x86_64
 Aug 03 21:51:35 Installed: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
 Aug 03 21:51:35 Updated: 12:dhclient-4.2.5-83.el7.centos.1.x86_64
 ......more......

 

2.2 yum命令

2.2.1 查询

1 yum list [软件名]
 [root@31yml ~]#yum list httpd
 已加载插件:fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
  * base: mirrors.ustc.edu.cn
  * extras: mirrors.163.com
  * updates: mirrors.ustc.edu.cn
 可安装的软件包
 httpd.x86_64                                                                          2.4.6-99.el7.centos.1                                                                           updates

 

2 yum info [软件名]
 [root@31yml ~]#yum info httpd
 已加载插件:fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
  * base: mirrors.ustc.edu.cn
  * extras: mirrors.163.com
  * updates: mirrors.ustc.edu.cn
 可安装的软件包
 名称    :httpd
 架构    :x86_64
 版本    :2.4.6
 发布    :99.el7.centos.1
 大小    :2.7 M
 源    :updates/7/x86_64
 简介    : Apache HTTP Server
 网址    :http://httpd.apache.org/
 协议    : ASL 2.0
 描述    : The Apache HTTP Server is a powerful, efficient, and extensible
          : web server.
 #不加软件名是显示所有包的详细信息

 

3 yum search <关键词>

根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来

 [root@31yml ~]#yum search ftp
 已加载插件:fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
  * base: mirrors.ustc.edu.cn
  * extras: mirrors.163.com
  * updates: mirrors.ustc.edu.cn
 ======================================== N/S matched: ftp =========================================
 ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
 lftp-scripts.noarch : Scripts for lftp
 syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting
 tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
 tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
 vsftpd.x86_64 : Very Secure Ftp Daemon
 vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
 curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
 lftp.i686 : A sophisticated file transfer program
 lftp.x86_64 : A sophisticated file transfer program
 wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
 ​
   名称和简介匹配 only,使用“search all”试试。

 

4 yum provides <关键词>

你知道某个命令却不知道具体的包可以用此命令查找

 [root@localhost Packages]#rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm 
 错误:依赖检测失败:
     httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
 [root@localhost Packages]#yum provides httpd-tools
 已加载插件:fastestmirror, langpacks
 Determining fastest mirrors
  * base: mirrors.tuna.tsinghua.edu.cn
  * extras: mirrors.tuna.tsinghua.edu.cn
  * updates: mirrors.ustc.edu.cn
 httpd-tools-2.4.6-95.el7.centos.x86_64 : Tools for use with the Apache HTTP Server
 源    :base
 ​
 [root@localhost ftp]#ll /etc/mime.types 
 -rw-r--r--. 1 root root 51787 5月  15 2013 /etc/mime.types
 [root@localhost ftp]#yum provides mime.types
 #不写路径查找不到
 No matches found
 [root@localhost ftp]#yum provides  */mime.types
 #加上通配符
 ​
 [root@localhost ~]#yum  whatprovides ftp
 已加载插件:fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
 ftp-0.17-67.el7.x86_64 : The standard UNIX FTP (File Transfer
                        : Protocol) client
 源    :abc

 

5 yum grouplist [包组名]

安装包组的查询 不加包组名 就是显示所有(此处例子由于安装了中文环境,无法显示英文包组名称无法直接复制中文使用,建议直接安装英文操作系统)

 [root@31yml ~]#yum grouplist
 已加载插件:fastestmirror, langpacks
 没有安装组信息文件
 Maybe run: yum groups mark convert (see man yum)
 Loading mirror speeds from cached hostfile
  * base: mirrors.ustc.edu.cn
  * extras: mirrors.163.com
  * updates: mirrors.ustc.edu.cn
 可用的环境分组:
    最小安装
    基础设施服务器
    计算节点
    文件及打印服务器
    基本网页服务器
    虚拟化主机
    带 GUI 的服务器
    GNOME 桌面
    KDE Plasma Workspaces
    开发及生成工作站
 可用组:
    传统 UNIX 兼容性
    兼容性程序库
    图形管理工具
    安全性工具
    开发工具
    控制台互联网工具
    智能卡支持
    科学记数法支持
    系统管理
    系统管理工具
 完成

 

6 yum groupindo <包组名>

不加包组名显示全部

[root@31yml ~]#yum groupinfo "GNOME Desktop"
已加载插件:fastestmirror, langpacks
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.ustc.edu.cn

环境分组:GNOME 桌面
环境 ID:gnome-desktop-environment
 描述:GNOME 是一个非常直观且用户友好的桌面环境。
必备组:
   +base
   +core
   +desktop-debugging
   +dial-up
   +directory-client
   +fonts
   +gnome-desktop
   +guest-agents
   +guest-desktop-agents
   +input-methods
   +internet-browser
   +java-platform
   +multimedia
   +network-file-system-client
   +networkmanager-submodules
   +print-client
   +x11
可选组:
   +backup-client
   +gnome-apps
   +internet-applications
   +legacy-x
   +office-suite
   +remote-desktop-clients
   +smart-card

 

FTP服务:ftp://

HTTP服务:http://

本地目录:file://

yum仓库服务器,在内网就能使用

在服务器端安装http服务(可以是httpd,也可以是nginx)

yum install httpd -y(安装网页软件,提供文件共享服务)

mount /dev/se0 /var/www/html/(提供安装包)

systemctl start httpd

mount /dev/se0 /var/www/html/
ls /var/www/html/

 

客户端

cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
vim http.repo

[http]
name=http
baseurl=http://服务器的ip地址
gpgcheck=0

yum clean all
yum makecache

 

2.2.2 yum安装升级

1. yum install [软件名]
前提:网卡DNS服务器地址配置外网
218.2.135.1
114.114.114.114
8.8.8.8
[root@31yml ~]#yum install httpd

 

2. yum groupinstall <包组名>
[root@31yml ~]# yum group install gnome desktop -y

 

3. yum update

更新包组,可以单个也可以全部 后面加具体包组名称就是单个更新,不加就是全部更新。

但是首先你要有更新的包组库否则也无法更新。

[root@31yml ~]# yum upgrade 

 

4. yum groupupdate

组包更新和单个安装包更新差不多此处不举例子赘述。

2.2.3 软件卸载

1.yum remove <软件名>

卸载已安装的软件必须加软件名

[root@localhost yum.repos.d]# yum remove 
已加载插件:fastestmirror, langpacks
错误:需要为 remove 指定软件包列表

[root@localhost yum.repos.d]# yum remove httpd
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7.centos 将被 删除
--> 解决依赖关系完成
......more......

 

2. yum groupremove <包组名>

同软件包卸载不做赘述

3. yum history

查看历史的使用记录

[root@localhost yum.repos.d]# yum history 
已加载插件:fastestmirror, langpacks
ID     | 登录用户                 | 日期和时间       | 操作           | 变更数 
-------------------------------------------------------------------------------
     5 | root <root>              | 2021-06-24 00:02 | Erase          |    1   
     4 | root <root>              | 2021-06-23 11:03 | Install        |    1   
     3 | root <root>              | 2021-06-23 11:03 | Install        |    1   
     2 | root <root>              | 2021-06-23 11:03 | Install        |    5   
     1 | 系统 <空>                | 2021-06-15 22:40 | Install        | 1318   
history list

 

选择ID 1,2,3,4,5

可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除

例子中将 4卸载

[root@localhost yum.repos.d]# yum history undo 4
已加载插件:fastestmirror, langpacks
Undoing transaction 4, from Wed Jun 23 11:03:38 2021
    安装 vsftpd-3.0.2-22.el7.x86_64 @abc
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 删除
......more......

 

再次使用yum history 查看多了一条6 记录是卸载记录

[root@localhost yum.repos.d]# yum history 
已加载插件:fastestmirror, langpacks
ID     | 登录用户                 | 日期和时间       | 操作           | 变更数 
-------------------------------------------------------------------------------
     6 | root <root>              | 2021-06-24 00:11 | Erase          |    1   
     5 | root <root>              | 2021-06-24 00:02 | Erase          |    1   
     4 | root <root>              | 2021-06-23 11:03 | Install        |    1   
     3 | root <root>              | 2021-06-23 11:03 | Install        |    1   
     2 | root <root>              | 2021-06-23 11:03 | Install        |    5   
     1 | 系统 <空>                | 2021-06-15 22:40 | Install        | 1318   
history list

 

如果后悔 卸载 可以使用两种方式

yum history redo 4 (重新安装一遍)

yum history undo 6 (反悔卸载等于重新安装一遍)

3、搭建仓库的方式

本地yum仓库 没有网络的情况下用 光盘

软件仓库的提供方式 FTP服务:ftp://ip地址/站点里路径 HTTP服务:http://域名或者ip地址/站点里的路径 本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)

3.1 搭建本地yum仓库

#关闭防火墙

mount /dev/sr0 /mnt
cd  /etc/yum.repos.d
mkdir bak 
mv *.repo  bak/
vim local.repo
[ftp]
name=ftp
baseurl=file:///mnt
gpgcheck=0

yum clean all
yum makecache

yum install  dhcp

 

3.2 http方式搭建

服务端:192.168.177.100
yum  install   httpd
mount  /dev/sr0   /var/www/html
客户端:
cd  /etc/yum.repos.d
mkdir bak 
mv *.repo  bak/
vim  httpd.repo
[httpd]
name=http
baseurl=http://192.168.177.100
gpgcheck=0

yum clean all
yum makecache

yum install  dhcp

 

4、存储和NFS共享

存储类型分为三种

  • 直连式存储:Direct-Attached Storage,简称DAS

  • 网络附加存储:Network-Attached Storage,简称NAS

  • 存储区域网络:Storage Area Network,简称SAN

DAS:存储和主机是直连的,家用电脑,服务和硬盘直连,存储和主机在一台机器上 SAN:有一定距离,主机核存储设备距离先对较远 ,只提供空间不提供文件系统,管理等其他软件服务,只相当于多了一块硬盘 NAS:存储在远程,文件系统也在远程,这块空间,你可以直接访问上面的文件,你只能看到文件,文件共享NFS FTP 等都是NAS

三种存储架构的应用场景

  • DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

  • NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

  • SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂

4.1 NFS简介

NFS(Network File System 网络文件服务) 文件系统(软件)文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 NFS 也是 NAS 存储 设备必然支持的一种协议

NAS存储:

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能) NFS 也是 NAS 存储 设备必然支持的一种协议 以完成远 程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务, 前者用于 NFS 共享发布和访问,后者用于 RPC 支持。 手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

特点: 采用TCP/IP传输网络文件 安全性低 简单易操作 适合局域网环境

NFS原理:

image-20230807231158584

4.2 NFS软件介绍

软件包:nfs-utils(包括服务器端和客户端)

相关软件包:rpcbind(必须)

nfs端口号不固定 RPC端口号111

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

日志:/var/lib/nfs/

NFS配置文件:

/etc/exports
/etc/exports.d/*.exports

 

4.3 NFS共享配置文件格式

/dir        主机1(opt1,opt2)          主机2(opt1,opt2)...
共享目录      共享给哪个主机

 

格式说明:

  • 以#开始的行为注释

  • 主机格式

anonymous:表示使用*通配所有客户端
单个主机:ipv4,ipv6,FQDN
IP networks:两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主机名通配,例如:*.magedu.com,IP不可以
netgroups:NIS域的主机组,@group_name
 

#查看当前共享信息
exportfs -v


[root@localhost ~]#exportfs -r
#重新加载服务配置
exportfs: No options for /share *: suggest *(sync) to avoid warning

###客户机上如何查看共享
[root@localhost yum.repos.d]#showmount -e 192.168.91.100
#
Export list for 192.168.91.100:
/share *

[root@localhost yum.repos.d]#mount 192.168.91.100:/share   /mnt/nfs1/
#                                   对方地址      共享文件夹   挂载点
[root@localhost yum.repos.d]#df




[root@localhost data]#chmod 777 /data/ -R
[root@localhost data]#chmod 755 /data/ -R
#恢复权限
[root@localhost data]#setfacl -m u:nfsnobody:rwx  /data/nfs1
#只给 nfsnobody用户 权限
[root@localhost data]#setfacl -b  /data/nfs1
#删除acl 列表


[root@localhost nfs1]#ll
#变成nobody   由root_squash(压缩缩小)  决定
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody    0 3月  21 01:17 111.txt
-rwxrwxrwx. 1 root      root      2259 3月  21 01:12 passwd


#普通用户不压榨   由   no_all_squash决定



/share    *(rw,no_root_squash)



###用户  uid问题####

统一压榨成指定用户

 

4.4 搭建过程

你可以复习添加一块新硬盘用作共享使用

服务端和客户端都需要安装软件,不区分服务端和客户端,基于内核的共享


[root@localhost httpd]#systemctl stop firewalld
[root@localhost httpd]#setenforce 0
[root@localhost share]#yum install nfs-utils.x86_64 rpcbind -y
#安装软件包
[root@localhost httpd]#mkdir /share
#新建共享目录
[root@localhost httpd]#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 
[root@localhost ~]#exportfs -vr
#不重启生效
[root@localhost share]#exportfs -v
#查看详细的nfs信息
#exportfs 可用于管理nfs
-v 查看本机所有nfs
-r 重读配置文件
-a 输出本机所有共享
/share            192.168.91.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

[root@localhost ~]# netstat -anpt | grep rpc

[root@localhost ~]# showmount -e 
Export list for localhost.localdomain: 
/opt/wwwroot 192.168.7.0/24 
/var/ftp/pub 192.168.4.110,192.168.4.11
#查看本机发布的 NFS 共享目录


#客户机
[root@localhost ~]# mount 192.168.7.250:/opt/wwwroot /var/www/html
#                           服务器地址   冒号 对方共享文件夹    本地挂载点
[root@localhost ~]# vi /etc/fstab 
…… //省略部分信息 
192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
#自动挂载
showmount -e 主机名  (查看远程主机nfs共享)

#强制解挂载
[root@localhost ~]# umount /mnt
t umount. nfs: /mnt : device is busy 
[root@localhost ~]# umount -lf /mnt