目录
💪每篇一句话:请把每一天都当做你生命中的最后一天。
👏博客主页: 懿 然
🙏文章为个人笔记,若其中如有内容不规范或讲解有误区的地方还请各位指正,谢谢大家!
🥺如果对您有帮助还请各位网友为博主点赞 👍+评论 📝+收藏⭐️+ 三连!!!
前言
❗️❗️❗️本篇目标
本篇主要讲解局域网搭建Yum源的主要步骤;最终构建HTTP局域网Yum源,使局域网中的凡有需求的“客户端”均可使用远程源;尾篇讲如在使用过程中遇到缺少软件依赖包情况时该如何解决。
💪冲冲冲⛽️
1. 概述
什么是YUM源?
Yum源(Yellow dog Updater, Modified),是RedHat以及CentOS中的软件包管理器(国产系统也有应用到),主要用于自动安装、升级rpm软件包,能够自动查找并解决rpm包之间的依赖关系。yum源相当于一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
- YUM工作原理:
- 服务器端:运行YUM仓库服务器,存放所有的RPM包,并提供HTTP或FTP服务。
- 客户端:配置好YUM仓库的地址,通过解析仓库配置文件,并在本地建立元数据缓存,在需要安装或更新软件时,通过HTTP或FTP协议从仓库服务器下载相关的RPM包以及元数据。
2. 背景
为什么需要自搭建局域网Yum源?
搭建本地yum源可以提高软件包的下载速度和稳定性,增强系统安全性,适应离线环境,满足定制需求,节省带宽成本等多方面的需求。
- 网络环境不稳定:在网络环境不稳定或者网络带宽较小的情况下,使用本地yum源可以提高软件包的下载速度和稳定性。
- 安全性考虑:使用本地yum源可以减少对外部源的依赖,降低因为外部源被攻击或篡改而导致系统安全性问题的风险。
- 离线环境:在没有网络连接的环境下,本地yum源可以提供离线安装软件包的功能
- 定制需求:搭建本地yum源可以根据自己的需求定制软件包,方便管理和部署。
- 节省带宽成本:如果有多台服务器需要安装相同的软件包,使用本地yum源可以节省带宽成本,避免多次下载相同的软件包。
3. 实施
具体该如何实现既定目标?
-
演示环境
Server端:采用国产欧拉系统
[root@localhost ~]# cat /etc/os-release NAME="openEuler" VERSION="22.03 (LTS-SP3)" ID="openEuler" VERSION_ID="22.03" PRETTY_NAME="openEuler 22.03 (LTS-SP3)" ANSI_COLOR="0;31"
Client端:
[root@node01 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
ISO镜像版本:openEuler-23.09-x86_64-dvd.iso
- 注意事项:
1.关闭SElinux
setenforce 0
2.关闭本地防火墙(或策略放通所需端口)
systemctl stop firewalld
- 主要步骤:
准备ISO镜像(软件包)。
设置一个Web服务器,比如Apache或Nginx,来提供这些软件包的下载。
创建或编辑YUM仓库的元数据文件。
配置客户端以使用新的YUM源。
3.1 上传ISO镜像
通过文件传输工具将ISO上传至目标Yum源服务器
[root@localhost ~]# find / -name openEuler-23.09-x86_64-dvd.iso
/root/openEuler-23.09-x86_64-dvd.iso
- 工具链接:
FileZilla:https://filezilla-project.org/index.php
WinSCP:https://winscp.net/eng/index.php
FinalSHell:http://www.hostbuf.com/t/988.html
MobaXterm:https://mobaxterm.mobatek.net/
……
3.2 部署HTTP服务
Yum源仓库建立使用HTTP\FTP均可,小编本章利用HTTP方式搭建。
3.2.1 安装
[root@localhost ~]# yum -y install httpd
Last metadata expiration check: 4:12:26 ago on 2024年04月08日 星期一 11时22分20秒.
Dependencies resolved.
===========================================================================================
……
……
Installed:
httpd-2.4.51-20.oe2203sp3.x86_64 httpd-filesystem-2.4.51-20.oe2203sp3.noarch httpd-tools-2.4.51-20.oe2203sp3.x86_64 mailcap-2.1.53-3.oe2203sp3.noarch
mod_http2-1.15.25-2.oe2203sp3.x86_64 openEuler-logos-httpd-1.0-8.oe2203sp3.noarch
Complete!
3.2.2 启动
[root@localhost ~]# systemctl restart httpd #启动http服务
[root@localhost ~]# systemctl status httpd #查看http服务
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2024-04-08 15:38:58 CST; 9s ago
Docs: man:httpd.service(8)
Main PID: 181676 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
Tasks: 177 (limit: 98886)
Memory: 27.4M
CGroup: /system.slice/httpd.service
├─ 181676 /usr/sbin/httpd -DFOREGROUND
├─ 181721 /usr/sbin/httpd -DFOREGROUND
├─ 181722 /usr/sbin/httpd -DFOREGROUND
├─ 181723 /usr/sbin/httpd -DFOREGROUND
└─ 181724 /usr/sbin/httpd -DFOREGROUND
4月 08 15:38:58 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
4月 08 15:38:58 localhost.localdomain httpd[181676]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Se>
4月 08 15:38:58 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
3.2.3 验证
浏览器直接访问:http:x.x.x.x
3.3 挂载ISO镜像
- 挂载镜像
格式:mount -o loop iso(文件的绝对路径) 服务器目标路径
注:http默认路径/var/www/html
[root@localhost ~]mkdir -p /var/www/html/iso/OpenEuler #创建挂载目录
[root@localhost ~]# mount -o loop /root/openEuler-23.09-x86_64-dvd.iso /var/www/html/iso/OpenEuler/
#镜像挂载
mount: /var/www/html/iso/OpenEuler: WARNING: source write-protected, mounted read-only.
-
访问WEB验证
3.4 配置客户端Yum源
- 备份Yum源文件
[root@node01 ~]# cd /etc/yum.repos.d/
[root@node01 yum.repos.d]# mkdir repo.bak #创建备份文件
[root@node01 yum.repos.d]# mv CentOS-* repo.bak/ #拷贝至备份文件
- 新建Yum源文件
[root@node01 yum.repos.d]# vi Openeuler-base.repo
[openeuler] #yum的ID 本地唯一,用于区分不同yum源
name=openeuler #描述信息
baseurl=http://192.168.1.36/iso/OpenEuler/ #前面的file://是协议,后面为资源目录
enabled=1 #1启用当前yum源,0禁用
gpgcheck=0 #1使用公钥验证rpm包的正确性,0不验证
- 验证Yum源配置
[root@node01 ~]# yum clean all #清除旧yum缓存
已加载插件:fastestmirror
正在清理软件源: docker-ce-stable elrepo kubernetes openeuler
Cleaning up list of fastest mirrors
Other repos take up 222 M of disk space (use --verbose for details)
[root@node01 ~]# yum makecache #创建新yum缓存
已加载插件:fastestmirror
Determining fastest mirrors
* elrepo: mirrors.tuna.tsinghua.edu.cn
openeuler | 3.8 kB 00:00:00
……
元数据缓存已建立
[root@node01 ~]# yum repolist all #查看yum仓库
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo: mirrors.tuna.tsinghua.edu.cn
源标识 源名称 状态
openeuler openeuler 启用: 2,626
注:如所配置yum状态显示禁用可通过以下命令启用
yum-config-manager --enable <repo> #repo:YUM源名称
4. 扩展YUM源
搭建局域网yum源后,在使用过程中都会发现缺少很多软件依赖包;要扩展本地yum源软件包,首先需要在服务器上安装和配置yum工具。
扩展Yum源常见方式:rsync、wget、reposync
- rsync:需要外网 yum 源支持 rsync 协议
- wget:可以直接获取
- reposync:可以同步几乎所有的 yum 源
4.1 WGET
将需要的软件包下载到本地,并将其放入一个目录中,使用createrepo工具来生成repodata数据,以创建yum源索引文件。
- 服务端配置
[root@localhost ~]# yum install createrepo -y #安装工具
[root@localhost ~]# cd /var/www/html/ #移动到WEB资源发布目录
[root@localhost html]# mkdir centos #创建资源目录
[root@localhost html]# createrepo centos/ #生成yum索引
[root@localhost html]# cp /root/yum-utils-4.0.21-25.el8.noarch.rpm /var/www/html/centos/ #下载的资源包移动至该目录
- 客户端配置
修改本地yum配置文件,指定远程yum源
[root@node01 ~]# cd /etc/yum.repos.d/
[root@node01 yum.repos.d]# vi centos.repo #创建repo文件
[centos]
name=centos
baseurl=http://x.x.x.x/centos
enabled=1
gpgcheck=0
[root@node01 yum.repos.d]# yum clean all #清除旧缓存
[root@node01 yum.repos.d]# yum makecache #生成新缓存
- 访问WEB验证
4.2 Reporsync
- 配置yum源
[root@localhost ~]# mkdir /etc/yum.repos.d/backup
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
#备份yum文件
———————————————————————————————————————————————————————————————————————————————————————
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#下载阿里云yum源,并更改文件名称
————————————————————————————————————————————————————————————————————————————————————————
[root@localhost ~]# yum clean #清除缓存
[root@localhost ~]# yum makecache #生成缓存
[root@localhost ~]# yum repolist #列出yum仓库列表
已加载插件:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5,802
repolist: 16,400
- 安装相关软件
[root@localhost ~]# yum install -y wget httpd yum-utils createrepo
——————————————————————————————————————————————————————————————————
wget #下载工具
httpd #提供WEB服务
yum-utils #yum工具集
createrepo #rpm文件进行索引建立的工具
- 同步yum源
创建本地yum源存放目录,同步阿里yum源软件包
[root@localhost ~]# mkdir /var/www/html/centos
[root@yumserver ~]# reposync -n --repoid=extras --repoid=updates --repoid=base --repoid=epel -p /mirror
#参数-n指下载最新软件包,-p指定目录,指定本地的源--repoid(如果不指定就同步本地服务器所有的源),下载过程比较久(10个小时左右)
- 创建仓库索引
[root@localhost centos]# createrepo -po /var/www/html/centos/base/ /var/www/html/centos/base/
[root@localhost centos]# createrepo -po /var/www/html/centos/extras/ /var/www/html/centos/extras/
[root@localhost centos]# createrepo -po /var/www/html/centos/updates/ /var/www/html/centos/updates/
- 更新数据源
[root@localhost base]# createrepo --update /var/www/html/centos/base/
[root@localhost base]# createrepo --update /var/www/html/centos/extras/
[root@localhost base]# createrepo --update /var/www/html/centos/updates/
- 启动WEB服务
详见3.2章节
- 访问WEB验证
WEB访问yum资源
- 客户端配置
配置yum源仓库
[root@node01 yum.repos.d]# vi CentOS7.repo
[base]
name=CentOS
baseurl=http://192.168.1.35/centos/base/
gpgcheck=0
enabled=1
[updates]
name=CentOS
baseurl=http://192.168.1.35/centos/updates/
gpgcheck=0
enabled=1
[extras]
name=CentOS
baseurl=http://192.168.1.35/centos/extras/
gpgcheck=0
enabled=1
[root@node01 yum.repos.d]# yum clean #清理缓存
[root@node01 yum.repos.d]# yum makecache #生成缓存
验证测试
[root@node01 yum.repos.d]# yum -y install Cython
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 Cython.x86_64.0.0.19-5.el7 将被 安装
--> 解决依赖关系完成
……
已安装:
Cython.x86_64 0:0.19-5.el7
完毕!
5. 总结
以上是如何在局域网自搭建yum源以及如何应对有扩展yum源需求的实践分享;后续会持续更新关于Linux运维篇的文章,欢迎大家一起学习交流;点个关注,可第一时间获取最新内容,感谢大家的支持❗❗❗