yum grouplist报错解决:no environments/groups match

1、需求场景

近期再弄Oracle RAC 集群,打算用图形界面方式安装,所以就想给之前最小化安装的linux服务器上用自己做的本地yum源来安装Centos 图形桌面,结果报错了

在这里插入图片描述

然后就去可以通外网的本地yum服务器上去执行下发现没啥问题

在这里插入图片描述

2、追溯阶段

原制作本地yum的方式(论记录自己操作的重要性)

# 安装建库所需工具
yum install -y yum-utils device-mapper-persistent-data lvm2 createrepo wget

# 下载阿里云repo文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

# centos 7
reposync -r base             -p /alldev/yum  
reposync -r epel             -p /alldev/yum
reposync -r extras           -p /alldev/yum
reposync -r updates          -p /alldev/yum

# 创建 reopdata仓库,生成仓库信息
createrepo -v /alldev/yum/epel
createrepo -v /alldev/yum/base
createrepo -v /alldev/yum/extras
createrepo -v /alldev/yum/updates

3、排错阶段

经过一番折腾后发现:


  1. 原来能使用 yum group相关命令的前提是已经使用createrepo 创建软件组关联信息
    官方文档:http://yum.baseurl.org/wiki/YumGroups.html
createrepo -g /path/to/mygroups.xml /srv/my/repo
  1. 如果用的国内镜像源做外部yum源来缓存至本地时,仍应该同步下载该yum源对应的comps.xml文件来用。
    不过,这里文档说的也不是那么清楚,大概意思是说清楚这个组声明文件的语法格式,但在实际使用中仍以实际yum源的制作者编辑的comps.xml文件来用,而非自己自定义。(或者是我理解力太差??)

  1. 使用参数:-m 来下载前面提到的yum源的制作者编辑的comps.xml文件
    下面这里用到的两个变量名分别指的是:
    仓库名:REPO
    本地仓库路径:DOWNLOAD_PATH
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=$DOWNLOAD_PATH

说到这里就涉及到这里就不得不提reposync 命令的参数了(谷歌翻译)

[root@lb1 yum.repos.d]# reposync --help
用法:
    reposync 用于将远程 yum 存储库同步到本地
    使用 yum 检索包的目录。

    /usr/bin/reposync [选项]


选项:
  -h, --help 显示此帮助信息并退出
  -c 配置, --config=CONFIG
                        要使用的配置文件(默认为 /etc/yum.conf)
  -a ARCH, --arch=ARCH 就像运行指定的拱门一样(默认:当前
                        arch,注意:不会覆盖 $releasever。 x86_64 是一个
                        i*86 的超集。)
  --source 操作源码包
  -r REPOID, --repoid=REPOID
                        指定要查询的repo id,可以指定多个
                        次(默认全部启用)
  -e CACHEDIR, --cachedir=CACHEDIR
                        存储元数据的目录
  -t, --tempcache 使用临时目录来存储/访问 yum-cache
  -d, --delete 删除存储库中不再存在的本地包
  -p DESTDIR, --download_path=DESTDIR
                        下载包的路径:默认为当前目录
  --norepopath 不要将 reponame 添加到下载路径。只能
                        在同步单个存储库时使用(默认为
                        添加 reponame)
  -g, --gpgcheck 删除后 GPG 签名检查失败的包
                        下载
  -u, --urls 只列出要下载的网址,不要
                        下载
  -n, --newest-only 只下载每个仓库的最新包
  -q, --quiet 尽量少输出
  -l, --plugins 启用 yum 插件支持
  -m, --downloadcomps 也下载 comps.xml
  --download-metadata 下载所有非默认元数据
  --allow-path-traversal
                        允许存储在其 repo 目录之外的包
                        同步(不安全,谨慎使用!)
  1. 只有两个yum源有软件组,即:base、epel
    也就是说只有这两个源需要单独执行 createrepo -g xxx
    资料来源,官方文档目前还没找到说明,是通过几份网上博客总结的(国内外)
    博客1:https://www.codenong.com/cs106570226/
    博客2:忘记了…

4、解决方案

综合上面的几点,针对Centos 7的国内源的正确缓存至本地做本地yum源的方式应为(借鉴下国外小伙的定时同步外部源的脚本)

#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS="base extras updates epel centosplus"
##local yum path
DOWNLOAD_PATH=/alldev/yum/
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=$DOWNLOAD_PATH
if [[ $REPO = 'base' || $REPO = 'epel' ]]; then
        createrepo -g $DOWNLOAD_PATH/$REPO/comps.xml $DOWNLOAD_PATH/$REPO/
else
        createrepo $DOWNLOAD_PATH/$REPO/
fi
done

5、测试效果

可以看下正常拉取了阿里云的base 源对应的comps.xml后再做组信息自动配置后的效果

[root@lb1 yum.repos.d]# ll /alldev/yum/base/
total 1576
-rw-r--r-- 1 root root 156763 Aug 22 02:31 a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-c7-x86_64-comps.xml.gz
-rw-r--r-- 1 root root 744670 Aug 22 02:31 comps.xml
drwxr-xr-x 2 root root 561152 Aug 22 02:44 Packages
drwxr-xr-x 2 root root   4096 Aug 22 03:17 repodata
[root@lb1 yum.repos.d]# ll /alldev/yum/base/repodata/
total 28860
-rw-r--r-- 1 root root 2994847 Aug 22 02:48 2b479c0f3efa73f75b7fb76c82687744275fff78e4a138b5b3efba95f91e099e-primary.xml.gz
-rw-r--r-- 1 root root 7474108 Aug 22 02:48 5319616dde574d636861a6e632939f617466a371e59b555cf816cf1f52f3e873-filelists.xml.gz
-rw-r--r-- 1 root root 6351994 Aug 22 02:49 6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88bad5ef-primary.sqlite.bz2
-rw-r--r-- 1 root root 1623852 Aug 22 02:48 845e42288d3b73a069e781b4307caba890fc168327baba20ce2d78a7507eb2af-other.xml.gz
-rw-r--r-- 1 root root  156763 Aug 22 02:49 a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-comps.xml.gz
-rw-r--r-- 1 root root  744670 Aug 22 02:49 cca56f3cffa18f1e52302dbfcf2f0250a94c8a37acd8347ed6317cb52c8369dc-comps.xml
-rw-r--r-- 1 root root 7508416 Aug 22 02:48 d6d94c7d406fe7ad4902a97104b39a0d8299451832a97f31d71653ba982c955b-filelists.sqlite.bz2
-rw-r--r-- 1 root root 2676918 Aug 22 02:48 ecaab5cc3b9c10fefe6be2ecbf6f9fcb437231dac3e82cab8d9d2cf70e99644d-other.sqlite.bz2
-rw-r--r-- 1 root root    3716 Aug 22 02:49 repomd.xml
[root@lb1 yum.repos.d]#

然后再手动创建仓库索引信息

[root@lb1 base]# createrepo -g /alldev/yum/base/comps.xml /alldev/yum/base/
Spawning worker 0 with 1259 pkgs
Spawning worker 1 with 1259 pkgs
Spawning worker 2 with 1259 pkgs
Spawning worker 3 with 1259 pkgs
Spawning worker 4 with 1259 pkgs
Spawning worker 5 with 1259 pkgs
Spawning worker 6 with 1259 pkgs
Spawning worker 7 with 1259 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

最后在原来执行yum group异常的机器中挑一台,注释掉本地yum仓库客户端配置文件的其他部分,只用base 源来测试下效果

[root@demo ~]# vim /etc/yum.repos.d/own.repo
[root@demo ~]# cat /etc/yum.repos.d/own.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://10.0.1.216/base
enabled=1
gpgcheck=0

#[extras]
#name=CentOS-$releasever - Base-ex
#baseurl=http://10.0.1.216/extras
#enabled=1
#gpgcheck=0
#
#[updates]
#name=CentOS-$releasever - Base-updates
#baseurl=http://10.0.1.216/updates
#enabled=1
#gpgcheck=0
#
#[epel]
#name=epel
#baseurl=http://10.0.1.216/epel
#enabled=1
#gpgcheck=0
#
#[docker]
#name=docker-ce
#baseurl=http://10.0.1.216/docker-ce-stable
#enabled=1
#gpgcheck=0
#
#[k8s]
#name=kubernetes
#baseurl=http://10.0.1.216/kubernetes
#enabled=1
#gpgcheck=0
[root@demo ~]# yum clean all && yum makecache fast && yum repolist
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base
Cleaning up list of fastest mirrors
Other repos take up 135 M of disk space (use --verbose for details)
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
base                                                                                                                                                                                                                                                                   | 3.6 kB  00:00:00
(1/2): base/group_gz                                                                                                                                                                                                                                                   | 153 kB  00:00:00
(2/2): base/primary_db                                                                                                                                                                                                                                                 | 6.1 MB  00:00:00
Metadata Cache Created
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id                                                                                                                                 repo name                                                                                                                                       status
base                                                                                                                                    CentOS-7 - Base                                                                                                                                 10,072
repolist: 10,072
[root@demo ~]#
[root@demo ~]# yum grouplist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Environment Groups:
   GNOME Desktop
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   Basic Web Server
   Virtualization Host
   Server with GUI
   KDE Plasma Workspaces
   Development and Creative Workstation
Available Groups:
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Graphical Administration Tools
   Legacy UNIX Compatibility
   Scientific Support
   Security Tools
   Smart Card Support
   System Administration Tools
   System Management
Done

可以看到现在正常了(截图证明下)

在这里插入图片描述

剩下部分就去给epel 源也做下就行了

[root@lb1 base]# createrepo -g /alldev/yum/epel/comps.xml /alldev/yum/epel/
Spawning worker 0 with 1705 pkgs
Spawning worker 1 with 1705 pkgs
Spawning worker 2 with 1705 pkgs
Spawning worker 3 with 1705 pkgs
Spawning worker 4 with 1705 pkgs
Spawning worker 5 with 1705 pkgs
Spawning worker 6 with 1704 pkgs
Spawning worker 7 with 1704 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

后面细节就写了,然后给本地yum仓库同步脚本改好,还有其他yum 客户端文件改回去即可。
最后用做好的本地yum再来装一次Centos 图形桌面

[root@demo yum.repos.d]# vim own.repo
[root@demo yum.repos.d]# cat own.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://10.0.1.216/base
enabled=1
gpgcheck=0

#[extras]
#name=CentOS-$releasever - Base-ex
#baseurl=http://10.0.1.216/extras
#enabled=1
#gpgcheck=0
#
#[updates]
#name=CentOS-$releasever - Base
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值