CentOS 7 dnf命令“conflicting requests”报错的解决方案

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

CentOS 7 dnf命令“conflicting requests”报错的解决方案
http://example.com/2025/05/06/md05/
作者
谢斐
发布于
2025年5月6日
许可协议