【shell编程】搭建本地离线yum源
搭建本地离线yum仓库
yum基于rpm安装,其中一个重要的特性就是可以自动解决依赖问题,yum的本质依旧是把后缀名.rpm的包下载到本地,然后按次序安装之。但是每次执行yum install安装会自动安装并且安装完毕后把rpm包自动删除。当下载比较大的服务,比如MySQL大约190M,每次都重新下载比较慢,这时就可以考虑,搭建本地离线yum仓库,大致需要如下几个步骤:
- 把rpm包及其相关依赖全部都下载到本地,保存好。
- 在
/etc/yum.repos.d/目录下配置本地仓库信息。 - 使用createrepo命令生成repodata信息。
- 使用
yum repoinfo检查确认。
YUM 是基于 RPM 的软件包管理工具,其一大优势在于能够自动解决依赖关系。YUM 的本质是将后缀为 .rpm 的软件包下载至本地,并按顺序完成安装。然而,在每次执行 yum install 命令时,系统不仅会自动下载并安装所需软件包,还会在安装完成后自动删除这些 RPM 包。
当需要安装较大的服务(如 MySQL,约 190MB)时,每次都重新下载显得效率较低。此时,可以考虑搭建本地离线 YUM 仓库,以提升安装效率。搭建步骤大致如下:
-
将所需的 RPM 包及其所有依赖包下载并保存到本地。
-
在
/etc/yum.repos.d/目录下配置本地仓库的 repo 文件。 -
使用
createrepo命令生成repodata元数据。 -
通过
yum repoinfo命令验证仓库配置是否生效。
配置本地yum仓库信息
# vim /etc/yum.repos.d/as4k.repo
[as4k]
name=as4k local repository
baseurl=file:///aspack
gpgcheck=0
enabled=1
可以看到,.repo 配置文件的编写相对简单,示例如下:
-
as4k是本地仓库的名称,可自定义命名,但需确保不与系统中已有的仓库名冲突。 -
name用于填写仓库的描述信息,仅作注释用途,可自由编辑。 -
baseurl用于指定本地仓库的路径,file://表示使用本地文件协议,后跟本地 RPM 包所在的路径,例如/aspack。 -
gpgcheck=0表示关闭 GPG 签名验证。默认情况下,YUM 会校验软件包的安全签名。若设置为0,则跳过此验证,避免因缺少公钥等问题导致安装失败,配置更加简便。 -
enabled=0表示当前仓库默认不启用。若要启用,请将其设为1
生成repodata信息
直观来看,完成上述两个步骤后,似乎就可以直接使用本地 YUM 仓库了。但实际上并非如此。如果此时尝试通过本地仓库安装某个软件包,系统会报如下错误:

错误有一大堆,总而言之就是本地仓库不行,还不能用。关键提示就是上图红色的部分,告诉我们找不到/aspack/repodata/repomd.xml这个文件,当然找不到了,到目前位置我们的本地仓库里除了鲜红的rpm包之外什么都没有,repomd.xml这个文件简单来说就是存放本地仓库rpm包的索引信息,具体用法不是我们关心的重点,可以使用createrepo直接生成。
假如我们本地仓库没有配置好,不仅本地仓库无法使用,整个yum安装工具都会一直报错,此时我们把本地yum配置文件改名或暂时删除即可
完成前两个步骤后,看似已经可以使用本地 YUM 仓库,但实际上还不行。如果此时直接安装,会报错,关键提示是找不到 /aspack/repodata/repomd.xml 文件。这是因为当前目录下只有 RPM 包,还没有生成仓库的索引信息。而 repomd.xml 正是 YUM 识别仓库所必需的索引文件。
解决方法很简单:使用 createrepo 命令即可生成 repodata 目录及相关索引。
createrepo命令默认系统没有,需要我们额外安装:
# yum install createrepo -y
安装完毕之后,直接使用:
# createrepo /aspack/
这时会发现本地仓库repodata相关信息已经生成完毕:

使用下述命令可以看到本地仓库基本信息:
# yum repoinfo as4k
Repo-id : as4k
Repo-name : as4k local repository
Repo-status : enabled
Repo-revision: 1537699080
Repo-updated : Sun Sep 23 18:38:01 2018
Repo-pkgs : 41
Repo-size : 214 M
Repo-baseurl : file:///aspack/
Repo-expire : 21,600 second(s) (last: Sun Sep 23 18:41:05 2018)
Filter : read-only:present
Repo-filename: /etc/yum.repos.d/as4k.repo
repolist: 41
安装MySQL5.7测试:
# yum install mysql-community-server
输出结果:


浙公网安备 33010602011771号