搭建本地yum仓库
参考地址:https://blog.youkuaiyun.com/qq_43475285/article/details/129479198
1. 前言
1.1 什么是yum
yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora ,centos,BClinux,RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理 , 能够从指定的服务器自动下载 RPM 包并且安装 , 可以自动处理依赖性关系 , 并且一次安装所有依赖的软件包 , 无须繁琐地一次次下载、安装。
我们可以使用 yum 工具通过 http,ftp 等协议去下载软件包 ,yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,让你很方便地使用命令直接管理软件包 ( 安装 , 卸载 , 更新 rpm 包 ), 甚至是 kernel 的更新。
1.2 为什么需要内网yum仓库
在生产和工作中,出于安全性考虑,很多服务器并不能直接访问公网,当使用rpm安装包安装一些软件时,经常出现缺少依赖而不能安装的情况,此时我们需要配置本地yum源,配置本机yum源相对容易,一般只需要将系统镜像上传到主机后进行挂载,但是当内网内多台机器需要配置yum源时,再一台一台的配置单机yum源就十分麻烦和耽误时间,下面将分别介绍如何搭建网络yum源,本机单机yum源和内网共享yum源。
1.3 准备工作
方式 | 说明 | 当前测试环境信息 | 地址信息 |
---|---|---|---|
配置网络yum源 | 只需要一台测试服务器 | CentOS Linux 7 (Core) | 192.168.244.111 |
配置单机本地yum源 | 只需要一台测试服务器 | CentOS Linux 7 (Core) | 192.168.244.111 |
配置本地共享yum源 | 至少需要两台可以联通的服务器 | CentOS Linux 7 (Core)*2 | 192.168.244.111(yum仓库),192.168.244.110(远端机器) |
2. yum源搭建
2.1 配置网络yum源
我们通常使用
yum install
命令来在线安装linux
系统的软件, 这种方式可以自动处理依赖性关系,并且一次安装所有依赖的软件包。众所周知,从国外下载软件速度非常慢,很多情况下都无法下载。国内一些大公司做镜像同步国外的软件, 那么我们可能使用国内的下载地址,就能下载我们需要的软件。
个人常用阿里云的镜像地址,这里就以阿里云的配置方式举例说明
详情参考阿里云官方配置https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11PJpevX
其他镜像地址可参考https://blog.youkuaiyun.com/m0_67598987/article/details/134339726
1.1 备份原文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
1.2 下载阿里云文件
注意不同版本下载不同的地址文件
有些新的机器没有
wget
命令,但一般都会有curl
命令。如果curl
命令也没有可以直接使用https://mirrors.aliyun.com/repo/Centos-7.repo
地址下载文件复制到CentOS-Base.repo
文件中
# centos 6*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# 或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
# centos 7*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# centos 8*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
1.3 更新yum源
yum clean all
yum makecache
1.4 其他yum源参考
参考地址均为
centos 7
相关配置
名称 | 地址 |
---|---|
清华大学yum源 | https://mirrors.tuna.tsinghua.edu.cn/help/centos/ |
网易yum源 | http://mirrors.163.com/.help/centos.html |
阿里云yum源 | http://mirrors.aliyun.com/repo/Centos-7.repo |
中科大yum源 | https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3 |
北京理工大学 | http://mirror.bit.edu.cn |
华为开源网站 | https://repo.huaweicloud.com/repository/conf/ |
2.2 本机单机yum源配置
当服务器无法访问公网或者所需要依赖无法在公网获取,我们可以通过使用挂载本地iso镜像来获取我们需要的rpm包和依赖
2.2.1 下载iso 镜像文件并上传至服务器自定义目录下
当前测试服务器为
centos7.9
,所以准备下获取centos7.9
的镜像一下为部分centos
下载地址,随意选择一个就可以,切记选择来源安全可靠的镜像下载.
http://man.linuxde.net/download/CentOS
http://mirrors.btte.net/centos/7/isos/x86_64/
http://mirrors.cn99.com/centos/7/isos/x86_64/
http://mirrors.sohu.com/centos/7/isos/x86_64/
[http://mirrors.aliyun.com/centos/7/isos/x86_64/](http://mirrors.aliyun.com/centos/7/isos/x86_64/)
http://centos.ustc.edu.cn/centos/7/isos/x86_64/
http://mirrors.neusoft.edu.cn/centos/7/isos/x86_64/
http://mirror.lzu.edu.cn/centos/7/isos/x86_64/
http://mirrors.163.com/centos/7/isos/x86_64/
http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/
2.2.2 挂载文件
# 新建目录(自定义)
mkdir centos7
# 挂载文件
mount -o loop /Yum_repository/CentOS-7-x86_64-DVD-2009.iso /Yum_repository/centos7/
# 如果挂载错了,可以使用umount取消挂载
umount /Yum_repository/centos7/
2.2.3 配置yum文件
# 备份原文件
cd /etc/yum.repos.d
mkdir bak
mv ./* bak
# 创建新的repo源,输入以下命令
echo "
[local]
name=bendiyum
baseurl=file:///Yum_repository/centos7/
enabled=1
gpgcheck=0" > local.repo
yum clean all
yum makecache
yum repolist
2.2.4 测试
# 安装命令测试
[root@localhost ~]# tree
-bash: tree: command not found
[root@localhost ~]# yum install tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================================================
Installing:
tree x86_64 1.6.0-10.el7 local 46 k
Transaction Summary
========================================================================================================================================================================================================
Install 1 Package
Total download size: 46 k
Installed size: 87 k
Is this ok [y/d/N]:
2.3 内网共享yum源配置
在内网时,当多台机器需要配置本地同一
yum
源时,我们不需要在每台服务器上单独配置并挂载镜像,只需要在一台服务器上配置好yum
源,并通过httpd
服务让其他服务器能够正常访问即可
2.3.1 httpd
2.3.1.1 httpd 介绍
httpd
是Apache
超文本传输协议(HTTP)
服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
2.3.1.2 安装httpd
在
yum
源仓库测试机器上安装httpd
# 使用 yum 安装
yum install httpd -y
# 如果不能使用 yum 则下载rpm包进行安装
# 1. 使用yumdownloader工具。先安装yum-utils包,yum install yum-utils -y,然后使用yumdownloader httpd下载httpd安装包,依赖包会自动一并下载。
yum install yum-utils -y
yumdownloader httpd
# 2. 使用 scp 拷贝到本地
scp root@192.168.244.111:/etc/yum.repos.d/httpd-2.4.6-99.el7.centos.1.x86_64.rpm ./
# 3. 使用 rpm -ivh 安装
rpm -ivh httpd-2.4.6-99.el7.centos.1.x86_64.rpm
2.3.1.3 启动 httpd
# 启动 httpd 服务
systemctl start httpd
systemctl status httpd
systemctl enable httpd
# 关闭防火墙
systemctl stop firewalld
2.3.1.4 测试
网页访问IP地址
2.3.2 配置挂载
# 进入httpd的/var/www/html目录中,新建 centosiso 目录
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# ll
total 2
drwxrwxr-x. 8 root root 2048 Nov 25 2018 centosiso
[root@localhost html]# mount -o loop /Yum_repository/CentOS-7-x86_64-DVD-1810.iso /var/www/html/centosiso/
mount: /Yum_repository/CentOS-7-x86_64-DVD-1810.iso is already mounted
2.3.3 浏览器测试
2.3.4 访问机器配置yum源
当仓库机器已经配置好
httpd
后,我们选择同一网段内网其他机器配置yum
源去访问此台服务器
# 备份原有yum源配置信息
cd /etc/yum.repos.d
mkdir bak
mv ./* bak
# 新建配置文件
vim local.repo
[local]
name=net_bendiyum
baseurl=http://192.168.244.111/centosiso/
enabled=1
gpgcheck=0
yum clean all
yum makecache
yum repolist
# 安装命令测试
3. 配置开机自动挂载
使用
systemctl
设置开机自动运行程序
3.1 编写自动挂载脚本
vim mount_yum_iso.sh
#!/bin/bash
# 检查ISO文件是否存在
if [ -f /Yum_repository/CentOS-7-x86_64-DVD-1810.iso ]; then
mount -o loop /Yum_repository/CentOS-7-x86_64-DVD-1810.iso /var/www/html/centosiso/
fi
3.2 配置 .service 文件
在
/etc/systemd/system/
目录下创建一个以.service
结尾的文件,例如mount_yum_iso.service
vi /etc/systemd/system/mount_yum.iso.service
[Unit]
Description=Test Script Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /Yum_repository/mount_yum_iso.sh
Restart=always
[Install]
WantedBy=multi-user.target
# 其中 ExecStart 就是脚本的路径
3.3 重新加载并启动服务
systemctl daemon-reload
systemctl enable mount_yum_iso.service