Linux网络服务之部署YUM仓库(上)

简介: 1 YUM简介1.1 YUM简介CentOS使用yum和dnf 解决rpm的包依赖关系。

1 YUM简介


1.1 YUM简介

CentOS使用yum和dnf 解决rpm的包依赖关系。

YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS 8 使用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的。

YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(Duck University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。

YUM(Yellow dog Updater,Modified):

  • 基于RPM包构建的软件更新机制
  • 可以自动解决依赖关系
  • 所有软件包由集中到YUM软件仓库提供

网络异常,图片无法展示
|


1.2 yum工作原理

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

Yum基于C/S模式:

  • yum 服务器存放rpm包和相关包的元数据
  • yum客户端访问yum服务器进行安装或查询等

Yum实现过程:

先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

网络异常,图片无法展示
|


服务器(RPM包和元数据缺一不可):

  • RPM包 (存放在包文件夹Packages中)
  • 元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
#查看光盘中自带的Yum仓库,可以看到Packages文件夹和repodata文件夹:
 [root@localhost ~]# mount /dev/sr0 /mnt   //将光盘挂载到/mnt/目录下
 mount: /dev/sr0 写保护,将以只读方式挂载
 [root@localhost ~]# ls /mnt      //查看光盘内的包文件夹和元数据文件夹
 CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
 EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
 EULA             isolinux  repodata  TRANS.TBL
复制代码


网络异常,图片无法展示
|


本地仓库类型:

  • 光盘的仓库(基本仓库)
  • epel 扩展仓库

1.3 如何实现安装服务

网络异常,图片无法展示
|


2 yum客户端配置


yum客户端配置文件

/etc/yum.conf              #为所有仓库提供公共配置
 /etc/yum.repos.d/*.repo    #每个仓库的配置文件
复制代码


2.1 yum主配置文件

位置:/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                        //调试级别(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的repo配置文件中可用的变量:
 $releasever: 当前OS的发行版的主版本号,如:8,7,6
 $arch: CPU架构,如:aarch64, i586, i686,x86_64等
 $basearch:系统基础平台;i386, x86_64
 $contentdir:表示目录,比如:centos-8,centos-7
 $YUM0-$YUM9:自定义变量
复制代码


网络异常,图片无法展示
|


2.2 yum仓库配置文件

2.2.1 仓库配置文件说明

位置:/etc/yum.repos.d/*.repo

系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。

[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
 CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
 CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
 [root@localhost yum.repos.d]# vim yuji.repo    //yum仓库配置文件格式
 [yuji]
 name=yuji                   #设置名称
 baseurl=file:///mnt        #设置链接地址,file://是本地源的固定格式
 enabled=1                   #开启此yum源
 gpgcheck=0                  #是否验证公钥,0表示无需验证            
复制代码


yum仓库配置文件中baseurl的几种形式:

# 本地源
 本地目录   file://        
 # FTP源
 FTP服务    ftp://
 # 网络源
 http://
 https://
复制代码


2.2.2 baseurl 指向的路径

CentOS系统的yum源

#阿里云
 https://mirrors.aliyun.com/centos/$releasever/
 #腾讯云
 https://mirrors.cloud.tencent.com/centos/$releasever/ 
 #华为云
 https://repo.huaweicloud.com/centos/$releasever/ 
 #清华大学
 https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
复制代码


EPEL的yum源

#阿里云
 https://mirrors.aliyun.com/epel/$releasever/x86_64
 #腾讯云
 https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
 #华为云
 https://mirrors.huaweicloud.com/epel/$releasever/x86_64
 #清华大学
 https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
复制代码


更新源

http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
复制代码


2.3 日志文件

位置:/var/log/yum.log

[root@localhost yum.repos.d]# head -5 /var/log/yum.log    //查看日志文件
 Jan 19 10:55:29 Installed: tree-1.6.0-10.el7.x86_64
 Feb 21 23:21:53 Installed: finger-0.17-52.el7.x86_64
 Mar 19 17:10:29 Updated: 32:bind-license-9.11.4-26.P2.el7_9.9.noarch
 Mar 19 17:10:30 Updated: 32:bind-libs-lite-9.11.4-26.P2.el7_9.9.x86_64
 Mar 19 17:10:30 Updated: 32:bind-libs-9.11.4-26.P2.el7_9.9.x86_64
复制代码


3 yum命令详解


命令 不加关键字 加入关键词、软件包、软件包组
yum list 显示所有可用包 单个的可安装包
yum info 显示所有可用包的信息 单个具体的信息
yum search \ 模糊查找所有的相关信息
yum whatprovides \ 精确查找
yum install \ 安装具体软件包
yum update 所有软件升级,更新内核 具体软件升级
yum upgrade 只更新软件包,但不更新内核 具体软件更新
yum remove \ 卸载具体软件
yum history 查看当前yum操作历史 \
yum history info \ 加序号列出某次事务的详细信息
yum history undo \ 加序号卸载序号里安装的软件
yum history redo \ 加序号重新执行序号里的操作


包组:

命令 不加关键字 加入关键词、软件包、软件包组
yum grouplist 显示所有可用包组 显示具体的包组
yum groupinfo 显示所有的包组具体信息 显示具体的包组的具体信息
yum groupinstall \ 安装具体软件包组
yum group update 所有包组升级 具体包组升级
yum groupremove \ 卸载具体包组软件


小贴士:

当使用 “yum remove 软件名” 未将软件包卸载干净时,可以使用“yum history undo 序号”进行卸载,可以完整卸载整个软件包,没有残留。


4 yum仓库搭建方式


软件仓库的提供方式:

4.1 搭建本地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        10G  4.0G  6.1G   40% /
 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/sdb5               xfs       2.0G   33M  2.0G    2% /data/bb
 /dev/sda1               xfs      1014M  179M  836M   18% /boot
 /dev/sdb1               xfs        10G   33M   10G    1% /data/aa
 /dev/mapper/vg01-lvmail xfs        13G   33M   13G    1% /data/mail
 tmpfs                   tmpfs     183M   12K  183M    1% /run/user/42
 tmpfs                   tmpfs     183M     0  183M    0% /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/      //切换至/etc/yum.repos.d/目录
 [root@localhost yum.repos.d]# ls
 CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
 CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
 [root@localhost yum.repos.d]# mkdir aaa      //创建一个名为aaa的新目录
 [root@localhost yum.repos.d]# mv *.repo aaa   //将yum仓库中以.repo结尾的文件移动到aaa中
 [root@localhost yum.repos.d]# ls
 aaa
复制代码


网络异常,图片无法展示
|


步骤3、新建yum仓库文件。

[root@localhost yum.repos.d]# vim yuji.repo    //新建yum仓库文件
 [yuji]
 name=yuji                   #设置名称
 baseurl=file:///mnt         #设置链接地址,file://是固定格式,指向/mnt
 enabled=1                   #开启此yum源
 gpgcheck=0                  #无需验证公钥  
复制代码


网络异常,图片无法展示
|


相关文章
|
1天前
|
网络协议 Linux 网络架构
|
3天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
18 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
4天前
|
关系型数据库 MySQL Linux
在Linux系统上实现高效安装与部署环境的全方位指南
在Linux系统上实现高效安装与部署环境的全方位指南
|
4天前
|
域名解析 网络协议 Linux
linux网络配置详解
linux网络配置详解
13 0
|
4天前
|
Linux 测试技术 网络安全
Linux系统之部署2048网页小游戏
【5月更文挑战第5天】Linux系统之部署2048网页小游戏
17 0
Linux系统之部署2048网页小游戏
|
4天前
|
前端开发 Java Linux
宝塔Linux:部署His医疗项目通过jar包的方式
宝塔Linux:部署His医疗项目通过jar包的方式
|
4天前
|
前端开发 Java 关系型数据库
2023全网最详细的若依开源项目部署,将其部署到Linux操心系统中
2023全网最详细的若依开源项目部署,将其部署到Linux操心系统中
|
5天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
11 0
|
5天前
|
存储 网络协议 算法
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
11 0
|
5天前
|
网络协议 算法 Linux
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
14 0