CentOS 7 dnf命令“conflicting requests”报错的解决方案
Reference
笔者在CentOS 7系统中安装Chrome浏览器时使用到了dnf
命令来处理其安装包,但是出现了以下报错:
1 2 3
| 错误: 问题: conflicting requests - nothing provides libc.so.6(GLIBC_2.18)(64bit) needed by google-chrome-stable-136.0.7103.59-1.x86_64
|
GLIBC是GNU发布的libc库,即c运行库。GLIBC是linux系统中最底层的api,几乎其它任何运行库都会依赖于GLIBC,而CentOS 7系统中的GLIBC版本为GLIBC_2.17
,而报错信息则说明在使用这一命令时需要GLIBC_2.18
及以上版本,因此我们需要对GLIBC库进行更新(直接升级到GLIBC_2.31
版本):
1. 基础环境准备
将GLIBC库升级到目标版本需要满足两个基础条件:
- GCC版本为9.X.X及以上
- make版本为4.0.X及以上
1)make升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| # 检查版本,满足条件可以跳过此步 make -v
# ---------------------------- # 安装依赖 yum -y install gcc gcc+
# 建立根目录 mkdir /backup # 下载make安装包 cd /backup wget https://mirrors.aliyun.com/gnu/make/make-4.3.tar.gz # 解压压缩包并建立构建目录 tar -xf make-4.3.tar.gz cd make-4.3 mkdir build cd build # 指定安装到具体的目录下,此示例表示将make安装到/opt下 ../configure --prefix=/opt/make # 编译安装 make && make install # 建立软连接 ln -sf /opt/make/bin/make /usr/bin/make # 检查make版本 make --version
# ---------------------------- # 目标输出 # GNU Make 4.3 # 为 x86_64-pc-linux-gnu 编译 # Copyright (C) 1988-2020 Free Software Foundation, Inc. # 许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。 # 本软件是自由软件:您可以自由修改和重新发布它。 # 在法律允许的范围内没有其他保证。
|
2)GCC升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # 检查版本,满足条件可以跳过此步 gcc -v
# ---------------------------- # 安装升级依赖 yum install -y gcc-c++ glibc-devel mpfr-devel libmpc-devel gmp-devel glibc-devel.i686 # 下载gcc9.3.1安装包 cd /backup wget https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz --no-check-certificate # 解包并执行编译前的准备 tar -xf gcc-9.3.0.tar.gz cd gcc-9.3.0
# 下载依赖包 ./contrib/download_prerequisites
# 建立构建目录 mkdir build cd build # 指定安装到具体的目录下,此示例表示将make安装到/usr下 ../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr # 编译安装 make -j4 # -j代表编译时的任务数,一般有几个cpu核心就写几,构建速度会更快一些。该步骤执行时间很长!!!大概需要一个半钟头左右。 make install # 7.安装完成后检查gcc版本 gcc -v
# ---------------------------- # 目标输出 # 使用内建 specs。 # COLLECT_GCC=gcc # COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/9.3.0/lto-wrapper # 目标:x86_64-pc-linux-gnu # 配置为:../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr # 线程模型:posix # gcc 版本 9.3.0 (GCC)
|
2. 升级GLIBC库
执行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 下载安装包 cd /opt wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz
tar -zxf glibc-2.31.tar.gz cd glibc-2.31/
# 检查是否满足基本需求 cat INSTALL | grep -E "newer|later"
mkdir build cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror
#一定要有这一步,python2安装会报错 yum install python3
make -j8 # 使用8核编译后速度显著快于-j4 make install
# 解决新启动远程终端时报一个WARNING make localedata/install-locales
|
如果再升级后仍出现和原先相同的报错,使用强制安装:
1
| sudo rpm -ivh --nodeps /tmp/chrome.rpm
|