Linux网络服务之部署YUM仓库

春衣少年当酒歌,起舞四顾以笑和。这篇文章主要讲述Linux网络服务之部署YUM仓库相关的知识,希望能为你提供帮助。
镜像下载、域名解析、时间同步请点击 阿里云开源镜像站
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软件仓库提供
Linux网络服务之部署YUM仓库

文章图片

1.2 yum工作原理yum依赖于环境,依赖于服务端和客户端,允许跨网络。
Yum基于C/S模式:
  • yum 服务器存放rpm包和相关包的元数据
  • yum客户端访问yum服务器进行安装或查询等
Yum实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
Linux网络服务之部署YUM仓库

文章图片

服务器(RPM包和元数据缺一不可):
  • RPM包 (存放在包文件夹Packages中)
  • 元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
#查看光盘中自带的Yum仓库,可以看到Packages文件夹和repodata文件夹: ? [root@localhost ~]# mount /dev/sr0 /mnt//将光盘挂载到/mnt/目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# ls /mnt//查看光盘内的包文件夹和元数据文件夹 CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7 EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7 EULAisolinuxrepodataTRANS.TBL

Linux网络服务之部署YUM仓库

文章图片

本地仓库类型:
  • 光盘的仓库(基本仓库)
  • epel 扩展仓库
1.3 如何实现安装服务
Linux网络服务之部署YUM仓库

文章图片

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:自定义变量

Linux网络服务之部署YUM仓库

文章图片

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.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo CentOS-CR.repoCentOS-fasttrack.repoCentOS-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:// HTTP服务http:// 外网环境https://

2.2.2 baseurl 指向的路径
CentOS系统的yum源
#阿里云 https://mirrors.aliyun.com/centos/$releasever/

EPEL的yum源
#阿里云 https://mirrors.aliyun.com/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仓库搭建方式软件仓库的提供方式:
  • 本地目录:file://绝对路径
  • FTP服务:ftp://ip地址/站点里的路径
  • HTTP服务:http://域名或者ip地址/站点里的路径
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 xfs10G4.0G6.1G40% / devtmpfsdevtmpfs897M0897M0% /dev tmpfstmpfs912M0912M0% /dev/shm tmpfstmpfs912M9.1M903M1% /run tmpfstmpfs912M0912M0% /sys/fs/cgroup /dev/sdb5xfs2.0G33M2.0G2% /data/bb /dev/sda1xfs1014M179M836M18% /boot /dev/sdb1xfs10G33M10G1% /data/aa /dev/mapper/vg01-lvmail xfs13G33M13G1% /data/mail tmpfstmpfs183M12K183M1% /run/user/42 tmpfstmpfs183M0183M0% /run/user/0 /dev/sr0iso96604.3G4.3G0100% /mnt

注意:mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载需要修改配置文件/etc/fstab。
Linux网络服务之部署YUM仓库

文章图片

步骤2、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# ls CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo CentOS-CR.repoCentOS-fasttrack.repoCentOS-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

Linux网络服务之部署YUM仓库

文章图片

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

Linux网络服务之部署YUM仓库

文章图片

步骤4、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all//清理yum缓存 [root@localhost yum.repos.d]# yum makecache//重新建立元数据 [root@localhost yum.repos.d]# yum list//查看可安装的软件列表 [root@localhost yum.repos.d]# yum install dhcp -y//yum安装dhcp测试是否成功

Linux网络服务之部署YUM仓库

文章图片

4.2 搭建阿里云仓库(http方式外网环境)默认的仓库文件是国外云仓库,速度比较慢,可以使用阿里云仓库代替。
操作步骤:
步骤1、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# mkdir aaa [root@localhost yum.repos.d]# mv *.repo aaa//将yum仓库中以.repo结尾的文件移动到aaa中 [root@localhost yum.repos.d]# ls aaa

步骤2、新建阿里云仓库。
[root@localhost yum.repos.d]# vim ali.repo [ali] name=aliyun #baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64///开启哪个版本都可以正常使用,这边主要解释变量的作用 baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=0 ? [epel]//epel源仓库 name=epel baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/ gpgcheck=0 ? [update]//更新包仓库 name=update baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/ gpgcheck=0

步骤3、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all//清理yum缓存 [root@localhost yum.repos.d]# yum makecache//重新建立元数据 [root@localhost yum.repos.d]# yum list//查看可安装的软件列表 [root@localhost yum.repos.d]# yum install tree -y//yum安装tree测试是否成功

4.3 http方式搭建云仓库http方式搭建云仓库,在外网和内网的环境下都可以使用,但多用于内网。
服务端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、服务端安装hhtpd服务程序。
[root@localhost ~]# yum install httpd -y

Linux网络服务之部署YUM仓库

文章图片

步骤2、服务端切换到/var/www/html/ 目录,新建子目录centos7,并将光驱挂载到centos7目录下(也可以将光驱中的所有软件包拷贝到该目录下)。
[root@localhost ~]# cd /var/www/html//切换目录 [root@localhost html]# ls [root@localhost html]# mkdir centos7//新建目录centos7 [root@localhost html]# mount /dev/sr0 ./centos7//将光驱挂载到centos7目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost html]# ls ./centos7 CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7 EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7 EULAisolinuxrepodataTRANS.TBL

Linux网络服务之部署YUM仓库

文章图片

步骤3、服务端关闭防火墙和selinux,启动httpd服务。
[root@localhost html]# systemctl stop firewalld [root@localhost html]# setenforce 0 setenforce: SELinux is disabled [root@localhost html]# systemctl start httpd

Linux网络服务之部署YUM仓库

文章图片

步骤4、客户端切换到/etc/yum.repos.d/目录,新建文件夹,将默认的yum仓库文件移动到该目录下。编写新的仓库文件
[root@192 ~]# cd /etc/yum.repos.d//客户端切换目录 [root@192 yum.repos.d]# ls CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo CentOS-CR.repoCentOS-fasttrack.repoCentOS-Sources.repo [root@192 yum.repos.d]# mkdir bak//新建文件夹 [root@192 yum.repos.d]# mv *.repo bak//将默认的仓库文件移动到该文件夹下 [root@192 yum.repos.d]# ls bak [root@192 yum.repos.d]# vim http.repo//编写新的仓库文件 [http] name=http baseurl=http://192.168.72.10/centos7 enabled=1 gpgcheck=0

Linux网络服务之部署YUM仓库

文章图片

Linux网络服务之部署YUM仓库

文章图片

步骤5、清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all & & yum makecache 已加载插件:fastestmirror, langpacks 正在清理软件源: ftp Cleaning up everything Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos Cleaning up list of fastest mirrors 已加载插件:fastestmirror, langpacks ftp| 3.6 kB00:00:00 (1/4): ftp/group_gz| 156 kB00:00:00 (2/4): ftp/primary_db| 3.1 MB00:00:00 (3/4): ftp/other_db| 1.2 MB00:00:00 (4/4): ftp/filelists_db| 3.1 MB00:00:00 Determining fastest mirrors 元数据缓存已建立 ? [root@192 yum.repos.d]# yum install ftp -y//测试yum安装,可以成功安装。

Linux网络服务之部署YUM仓库

文章图片

Linux网络服务之部署YUM仓库

文章图片

4.4 ftp方式搭建云仓库ftp方式搭建云仓库,在外网和内网的环境下都可以使用,但多用于内网。
服务端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、服务端安装vsftpd服务程序。
[root@localhost html]# yum install vsftpd -y

Linux网络服务之部署YUM仓库

文章图片

步骤2、服务端切换到 /var/ftp/ 目录下新建一个子目录centos,并将光驱挂载到centos目录下(也可以将光驱内的所有文件包复制到centos目录下)。
[root@localhost html]# cd /var/ftp//切换到/ftp/var/目录 [root@localhost ftp]# ls pub [root@localhost ftp]# mkdir centos//创建centos目录 [root@localhost ftp]# [root@localhost ftp]# mount /dev/sr0 ./centos//将光驱挂载到centos目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ftp]# ls ./centos CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7 EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7 EULAisolinuxrepodataTRANS.TBL

Linux网络服务之部署YUM仓库

文章图片

步骤3、服务端开启vsftpd服务,关闭防火墙和selinux。
[root@localhost ~]# systemctl start vsftpd [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0

Linux网络服务之部署YUM仓库

文章图片

步骤4、客户端安装ftp程序,测试ftp服务是否正常。
[root@192 ~]# yum install ftp -y//安装ftp程序 ? [root@192 ~]# ftp 192.168.72.10//测试ftp服务能否正常访问服务端 Connected to 192.168.72.10 (192.168.72.10). 220 (vsFTPd 3.0.2) Name (192.168.72.10:root): ftp 331 Please specify the password. Password: 230 Login successful.//可以正常访问 Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,72,10,85,22). 150 Here comes the directory listing. drwxr-xr-x8 002048 Sep 052017 centos drwxr-xr-x2 006 Jun 092021 pub 226 Directory send OK. ftp> bye 221 Goodbye.

Linux网络服务之部署YUM仓库

文章图片

步骤5、客户端编写yum仓库文件。
[root@192 ~]# cd /etc/yum.repos.d//切换目录 [root@192 yum.repos.d]# ls bak2CentOS-Debuginfo.repoCentOS-Sources.repo CentOS-Base.repoCentOS-fasttrack.repoCentOS-Vault.repo CentOS-CR.repoCentOS-Media.repo [root@192 yum.repos.d]# mkdir bak1//新建文件夹 [root@192 yum.repos.d]# mv *.repo bak1//将默认的仓库文件移动到该目录下 [root@192 yum.repos.d]# ls bak1bak2 [root@192 yum.repos.d]# vim ftp.repo//编写新的仓库文件 [ftp] name=ftp baseurl=ftp://192.168.72.10/centos//路径指向服务端的/var/ftp/centos/目录 enabled=1 gpgcheck=0

Linux网络服务之部署YUM仓库

文章图片

Linux网络服务之部署YUM仓库

文章图片

步骤6、清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all & & yum makecache 已加载插件:fastestmirror, langpacks 正在清理软件源: ftp Cleaning up everything Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos Cleaning up list of fastest mirrors 已加载插件:fastestmirror, langpacks ftp| 3.6 kB00:00:00 (1/4): ftp/group_gz| 156 kB00:00:00 (2/4): ftp/primary_db| 3.1 MB00:00:00 (3/4): ftp/other_db| 1.2 MB00:00:00 (4/4): ftp/filelists_db| 3.1 MB00:00:00 Determining fastest mirrors 元数据缓存已建立 ? [root@192 yum.repos.d]# yum install httpd -y//测试yum安装,可以成功安装。

Linux网络服务之部署YUM仓库

文章图片

Linux网络服务之部署YUM仓库

文章图片

4.5 搭建本地epel源仓库本地epel源仓库的应用场景:
  • 在可以连外网的情况下,可以使用国外源或阿里云仓库等。
  • 但实际工作中,公司内网常常无法连接外网,这时可以提前搭建本地epel源仓库,即在一台可连通外网的服务器中提前下载好epel源的所有软件包,编写好仓库文件后,在离线的情况下也可以使用yum安装软件包。
  • 之后其他主机可以通过http方式或ftp方式使用服务端的epel源仓库。
操作步骤:
步骤1、安装epel源,并下载epel源的所有软件包。
[root@localhost ~]# yum install epel-release//安装epel源 [root@localhost ~]# mkdir centos7//新建centos7目录 [root@localhost ~]# reposync -r epel -p /centos7/ & //下载同步epel源软件包,下载到/centos7/目录下,& 表示放到后台下载 [root@localhost ~]# ls /centos7 epel

步骤2、安装createrepo命令(建立元数据的命令),之后使用createrepo命令建立元数据。
[root@localhost ~]# yum -y install createrepo//安装createrepo命令 [root@localhost ~]# createrepo -v /centos7/epel//建立元数据(软件目录、依赖关系) [root@localhost ~]# cd/centos7/epel//切换到centos7/epel 目录下 [root@localhost epel]# ls//查看软件包和元数据 Packagesrepodata

步骤3、切换到/etc/yum.repos.d目录,移走默认仓库文件,编写新的仓库文件。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# ls CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo CentOS-CR.repoCentOS-fasttrack.repoCentOS-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 [root@localhost yum.repos.d]# vim epellocal.repo//新建yum仓库文件 [epellocal] name=epellocal#设置名称 baseurl=file:///centos7/epel#设置链接地址,路径指向/centos7/epel目录 enabled=1#开启此yum源 gpgcheck=0#无需验证公钥

其他主机如果想使用这台机器中的epel仓库,可以在本地使用http或ftp方式搭建:
baseurl=http://192.168.72.10/centos7/epel//http方式 ? baseurl=ftp://192.168.72.10/centos7/epel//ftp方式

5 小贴士 5.1 使用命令方式生成仓库文件以上四种方式都是都是通过手动编写yum仓库文件来配置,也可以直接通过命令来搭建。
命令的方式配置原理和上面的文件配置原理一样,都是写入/etc/yum.repos.d中,只是命令行是自动生成仓库文件 。
1、外网环境搭建
命令格式:
wget -O/etc/yum.repos.d/name.repo(自定义以repo结尾的文件名)源路径

wget 命令配置阿里云仓库:
wget -O/etc/yum.repos.d/Centos-7.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

2、内网环境搭建
命令格式:
yum-config-manager --add-repo=file:// yum-config-manager --add-repo=ftp://

示例:
yum-config-manager --add-repo=file:///mnt//使用本地源 yum-config-manager --add-repo=ftp://192.168.72.10/centos7//ftp方式搭建

5.2 下载依赖包到本地(但不安装)当内网的一台主机安装某个软件包却缺少依赖包时,可以先由一台可连接外网的服务器下载依赖包,之后共享给这台主机。
这时可以使用“yum install --downloadonly”命令,该命令可以仅下载所需软件及其依赖包、而不安装软件,大大减少了无外网安装时找依赖包的问题。命令格式如下:
yum install --downloadonly +软件名称 --downloaddir=指定rpm包存放路径

例如,下载nginx所需要的依赖包到/mnt/nginx目录内:
yum install nginx --downloadonly --downloaddir=/mnt/nginx

【Linux网络服务之部署YUM仓库】本文转自:https://juejin.cn/post/7078172295302217735

    推荐阅读