centos7中安装了centos-release-scl后,之前的yum源变为不可用 解决方案
centos7中安装了centos-release-scl后,之前的yum源变为不可用 解决方案
1. 前言
今天遇到了一个奇奇怪怪的事情,我自己在自己的服务器(centos7)上安装了centos-release-scl后,之前运行正常的yum命令竟然变得不可用。
2. 场景重现
执行下面这条命令后,再次使用yum报错。
yum install centos-release-scl -y
报错信息如下:
[root@localhost ~]# sudo yum install devtoolset-11
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-rh error was
14: curl#7 - "Failed to connect to 2a05:d012:8b5:6503:9efb:5cad:348f:e826: 网络不可达"
One of the configured repositories failed (未知),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Disable the repository, so yum won't use it by default. Yum will then
just ignore the repository until you permanently enable it again or use
--enablerepo for temporary usage:
yum-config-manager --disable <repoid>
4. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
3. 什么是SCL?
SCL项目主页:https://www.softwarecollections.org/
SCL(Software Collections)可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。SCL为社区的以下需求而设计:创建和使用软件集合生产系统、概念验证系统、开发测试平台。SCL目前已经支持Fedora和RHEL(衍生版本如CentOS也包含在内)。
SCL的创建就是为了给RHEL/CentOS用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突。
现在有以下软件选集可供CentOS 6.5或以上版本应用。
Ruby 1.9.3 (ruby193)
Python 2.7 (python27)
Python 3.3 (python33)
PHP 5.4 (php54)
Perl 5.16.3 (perl516)
Node.js 0.10 (nodejs010)
MariaDB 5.5 (mariadb55)
MySQL 5.5 (mysql55)
PostgreSQL 9.2 (postgresql92)
更多的软件集可参看这里:https://www.softwarecollections.org/en/scls/。
3.1 安装SCL
在CentOS下访问SCL,需要安装CentOS Software Collections。它是CentOS Extras软件库的一部份,并可通过以下指命进行安装。
Centos 7
$ yum install centos-release-scl
Centos 6
$ yum install centos-release-SCL
注意:Centos6和Centos7的包名是区分大小写的!
4. 问题分析
可能的原因是在安装 centos-release-scl
后,系统软件包管理器 yum
可能遇到了问题。centos-release-scl
是用于安装 Software Collections 的软件包,它提供了一种在 CentOS 系统上安装和管理多个软件版本的方法。
在安装 centos-release-scl
后,可能会导致系统的软件仓库配置发生变化,或者出现与旧有软件包版本冲突的情况。这可能会影响 yum
命令的正常运行,因为它依赖于正确的软件包仓库配置和软件包版本管理。
5. 解决方案
进入/etc/yum.repos.d
下查看文件。发现有三个yum配置文件。
cd /etc/yum.reps.d
ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-SCLo-scl-rh.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-SCLo-scl.repo CentOS-Sources.repo
CentOS-Base.repo
/ CentOS-SCLo-scl-rh.repo
/CentOS-SCLo-scl.repo
需要在这三个文件中配置yum源,但是查看发现CentOS-Base.repo配置了阿里云镜像,因此需要修改其他两个文件。配置yum的镜像源。首先对CentOS-SCLo-scl-rh.repo
进行修改。
vi CentOS-SCLo-scl-rh.repo
# 修改后
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
修改后发现依旧无法使用,将CentOS-SCLo-scl.repo
yum源进行修改。
vi CentOS-SCLo-scl.repo
# 修改后
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
修改之后yum即可正常使用。
yum clean all
yum makecache
参考文献:https://blog.csdn.net/m0_63303316/article/details/140200199