基于Nginx本地Yum仓库的搭建
在RHEL
及Centos
系列linux
发行版中,Yum
是我们安装软件包最为常用的工具,相较于单独安装单个软件包的rpm
工具,Yum
能够自动获取各个软件包之间的依赖关系并且能够一并下载安装,非常的简单方便。但是Yum
工具非常依赖Yum
工具获取软件包的目录,通常是在线的各大镜像站点,我们称之为Yum仓库
。
但有时在工作中,我们可能很难实时接触到互联网,或者从流量成本考虑,反复从互联网下载软件包花费大而且占用带宽,此时,构建本地Yum仓库
会是个不错的选择。本文将介绍如何构建本地Yum仓库
,并通过Ningx
搭建的Http
服务分发出去。
基于在线镜像站点创建Repo文件
Yum
工具需要依靠Repo文件得到Yum仓库
的基本信息,例如仓库路径,仓库标志。我们首先需要根据在线的镜像站点创建一个Repo文件,而且只能在指定的路径/etc/yum.repos.d/
下创建,否则Yum
将无法识别该文件。
[root@node1 ~]#cd /etc/yum.repos.d
[root@node1 yum.repos.d]#ls
repobackup selfbuild.repo
[root@node1 yum.repos.d]#touch test.repo
[root@node1 yum.repos.d]#ls
repobackup selfbuild.repo test.repo
以在线Mariadb
仓库为例:
[root@node1 yum.repos.d]#cat test.repo
[Mariadb]
name= Mariadb Local Repository
baseurl= https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos/7/x86_64/
gpgcheck= 0
enabled= 1
[root@node1 yum.repos.d]#yum repolist all
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id repo name status
CDRom cdrom enabled: 9,363
EPEL epel-aliyun enabled: 12,131
Mariadb Mariadb Local Repository enabled: 14
repolist: 21,508
这样mariadb
的在线仓库就能够投入使用了,但这不是我们的目的,我们需要通过这个在线仓库获取仓库内的所有软件包。
安装必要工具包
在构建本地Yum仓库
时需要用到两个工具reposync
和createrepo
,分别来自yum-utils
包和createrepo
包。reposync
用于同步远程Yum仓库
至本地路径,createrepo
用于生成安装包元数据信息。直接使用现有的在线EPEL源安装即可
[root@node1 yum.repos.d]#yum -y install yum-utils createrepo
[root@node1 yum.repos.d]#reposync --help
Usage:
Reposync is used to synchronize a remote yum repository to a local
directory using yum to retrieve the packages.
/usr/bin/reposync [options]
…… ……
[root@node1 yum.repos.d]#createrepo --help
Usage: genpkgmetadata.py [options]
…… ……
同步在线仓库的软件包文件至本地
在本地创建一个目录专门用于存放软件包构建Yum仓库
,然后使用reposync
同步在线仓库的软件包至本地。reposync
的使用格式为reposync -g -m -r REPO-ID -p PATH
,REPO-ID
为需要同步的Yum仓库
的标志,PATH
为本地目录。
[root@node1 yum.repos.d]#mkdir /app/repository
[root@node1 yum.repos