前言

repo(repository)是指仓库的意思,读者可能在使用 svn 时听说过 repo,也有可能在使用 fedora 等通过 rpm 包方式管理软件的操作系统上听说过 repo 源。openEuler 操作系统也是采用 rpm 包方式管理软件的操作系统,所以此处的 repo 主要是指 repo 源。

访问

我们怎么知道 openEuler 的 repo 源在哪里呢?下面介绍几种访问 repo 的方法:

1)直接网址访问:https://repo.openeuler.org/
小贴士:openEuler 很多的网址都是以 openeuler.org 结尾的,所以网址很好记。

2)通过官网访问:https://www.openeuler.org/zh/
点击“下载->镜像仓库列表”可以看到很多站点,找一个网络带宽大的站点访问,如下所示:
在这里插入图片描述
在这里插入图片描述

认识

下面让我们来认识一下 repo 里面有哪些内容。
在这里插入图片描述
前面的是 openEuler 已经发布的各个版本,作者将以最新的 openEuler-22.03-LTS 版本来讲解,而且这个版本实现了服务器、云、边缘和嵌入式的全场景支持,可以查看发行说明了解更多。

openEuler-22.03-LTS

在这里插入图片描述
这些目录下存放的是 openEuler 发布的各种软件包和镜像文件,各个目录具体存放什么样的软件可以参考 openEuler版本软件仓库说明

这里以 OS 目录为例进行介绍,openEuler 服务器版本主要支持 aarch64 和 x86_64 两种架构,由于一般用户只有 x86_64 架构的设备,所以只介绍 x86_64,aarch64 只是架构不同,其它内容是一致的,目录具体内容如下所示:
在这里插入图片描述
在这里插入图片描述
实际这里的内容和对应 ISO 目录下的镜像文件解压后的内容是一样的,主要目录和文件介绍如下:

  • Packages:存放发布的 rpm 包
  • docs:存放相关版权许可信息
  • repodata:repo 源数据,在配置 /etc/yum.repos.d/xx.repo 文件时,baseurl 参数必须设置为 repodata 目录的父目录,即 baseurl 指定的路径下必须要有 repodata 目录。
  • RPM-GPG-KEY-openEuler:gpgkey 文件,在配置 /etc/yum.repos.d/xx.repo 文件时,gpgkey 参数设置的文件。

配置

可以在 /etc/yum.repos.d 目录下创建 xx.repo 文件,然后在 repo 文件中配置 repo 源,每个源主要有六个字段如下:

[serverid]
name=Some name for this server
baseurl=url://path/to/repository/ 
enabled=[1 or 0] 
gpgcheck=1
gpgkey=url://path/to/repository/key
  • serverid:是用于区别各个不同的 repository 源,必须有一个独一无二的名称
  • name:是对 repository 的描述,支持像 $releasever $basearch 这样的变量,如:name=Fedora Core $releasever - $basearch - Released Updates
  • baseurl:配置 repo 的 url,其中 url 支持的协议有 http:// ftp:// file:// 三种。baseurl 后可以跟多个 url,但只能有一个 baseurl,如:
    baseurl=url://server1/path/to/repository/
    url://server2/path/to/repository/
    url://server3/path/to/repository/
  • enabled:当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
    通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,也能够方便地启用和禁用指定的软件仓库。
  • gpgcheck:有 1 和 0 两个选择,分别代表是否进行gpg校验,如果没有这一项,默认是检查的,一般会在 /etc/yum.conf 文件中默认配置为 1。
  • gpgkey:当 gpgcheck 配置为 1 时,需要配置这个字段为对应的 key 文件。

有几个变量可以使用:

  • $releasever:发行的版本
  • $arch:cpu体系,如 i686,athlon 等。
  • $basearch,cpu的基本体系组,如 i686 和 athlon 同属 i386,alpha 和 alphaev6 同属 alpha。

安装 openEuler 后,默认的 repo 文件为 /etc/yum.repos.d/openEuler.repo,其内容如下所示:
在这里插入图片描述
可以通过命令yum repolist查看配置了哪些 repo 源:
在这里插入图片描述

拓展

如何获取发布软件的版本

1、通过yum list --repo NAME获取指定 repo 源下面的软件信息,然后通过 shell 脚本解析出每个软件名和对应的版本信息。基本数据如下:
在这里插入图片描述
2、通过获取 packages 目录的 html 文件,然后通过 shell 脚本解析出每个软件名和对应的版本信息。比如:https://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/Packages/
在这里插入图片描述
解析工具在 https://gitee.com/icanpool/shcanpool 仓库中,执行如下:
在这里插入图片描述

后语

repodata 目录下有相应的软件包关系文件(xml 和 sqlite),yum 命令应该就是基于这些文件来获取软件信息的,openEuler 开发的包管理工具 pkgship(https://gitee.com/openeuler/pkgship)就是基于这里的 sqlite 数据库文件,读者可以自行体验 pkgship 工具,当然 openEuler 已经提供了网页版的包查询功能,可以访问 https://pkgmanage.openeuler.org/ 体验:
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐