一、背景信息
CentOS是一种Linux发行版, glibc是Linux系统中的重要组件之一。在CentOS中,glibc通常是作为系统的默认C标准库使用的,因为它是许多软件的基础库。在CentOS中,glibc的版本通常与CentOS版本一起发布。因为CentOS通常会优先选择稳定性而不是最新性,所以CentOS使用的glibc版本通常不是很新。
glibc的版本较低有时会影响某些服务的使用,特别是一些需要使用较新的glibc版本的软件,可能无法在CentOS中正常运行。因此,在CentOS中使用这些软件时,可能需要手动升级glibc或使用其他 Linux发行版。
此外,由于glibc是Linux系统中的重要组件之一, 在升级glibc前,需要确保备份系统数据和文件,并在升级之前进行全面的测试和评估以避免潜在的系统崩溃和不稳定性。大多数情况下,建议使用系统默认的glibc版本,除非有明确的需要使用较新版本的glibc。
切记,一定要在测试环境测试通过之后,才能在生产环境操作,且操作前一定要做好系统快照及数据备份,否则一旦升级失败,影响是非常大的!
二、升级步骤
2.1、安装要求
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz
tar -zxvf glibc-2.31.tar.gz
cd glibc-2.31/
cat INSTALL | grep -E "newer|later"
* GNU 'make' 4.0 or newer
* GCC 6.2 or newer
building the GNU C Library, as newer compilers usually produce
* GNU 'binutils' 2.25 or later
* GNU 'texinfo' 4.7 or later
* GNU 'bison' 2.7 or later
* GNU 'sed' 3.02 or newer
* Python 3.4 or later
* GDB 7.8 or later with support for Python 2.7/3.4 or later
* GNU 'gettext' 0.10.36 or later
根据glibc安装要求,需要达到上述条件,才可进行glibc2.31版本编译安装。
操作系统 | 组件名称 | 组件版本 | 版本查看命令 | 是否符合要求 | 是否需要安装 | 是否影响glibc升级 |
---|---|---|---|---|---|---|
CentOS 7.6.1810 | make | 3.82 | make -v | 否 | 是 | 是 |
CentOS 7.6.1810 | gcc | 4.8.5 | gcc -v | 否 | 是 | 是 |
CentOS 7.6.1810 | binutils | 2.27 | yum info binutils | 是 | 否 | |
CentOS 7.6.1810 | texinfo | 5.1 | yum info texinfo | 是 | 否 | |
CentOS 7.6.1810 | bison | 3.0.4 | yum info bison | 是 | 否 | |
CentOS 7.6.1810 | sed | 4.2.2 | sed --version | 是 | 否 | |
CentOS 7.6.1810 | Python | 2.7.5 | python --version | 否 | 是 | 是 |
CentOS 7.6.1810 | gdb | 7.6.1 | gdb --versiont | 否 | 是 | 否(可不升级) |
CentOS 7.6.1810 | gettext | 0.19.8.1 | yum info gettext | 是 | 否 |
说明:根据上述表格中信息,make、gcc、python、gbd均不符合安装要求,需手动安装符合要求的版本。经测试,glibc升级到2.31版本,没有遇到gdb的报错问题,可能是因为直接升级了python至3.4以上。如果你当前编译的版本提示gdb报错问题,你可以升级gdb版本至7.8以上。当前环境没有出现此类问题,所以这里就没有升级gdb至7.8以上版本。
2.2、安装基础库
yum install -y texinfo
yum install -y mlocate
yum install -y bzip2
yum install -y bison
yum groupinstall -y "Development Tools"
说明:如果系统环境未安装gcc环境,请执行如下命令:
yum install gcc gcc-c++ -y
2.3、编译安装gcc
wget https://mirrors.aliyun.com/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
tar axf gcc-9.3.0.tar.gz
cd gcc-9.3.0
./contrib/download_prerequisites
cat /proc/cpuinfo| grep "processor"| wc -l
mkdir build
cd build
../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr
make -j6
make install
gcc -v
如下图所示:
2.4、编译安装make
wget https://mirrors.aliyun.com/gnu/make/make-4.3.tar.gz
tar axf make-4.3.tar.gz
cd make-4.3
mkdir build
cd build
../configure --prefix=/usr && make && make install
make -v
如下图所示:
2.5、安装python3
yum install -y python3
python3 --version
Python 3.6.8
2.6、编译安装glibc
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz
cd glibc-2.31/
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
make -j6
make install
make localedata/install-locales
ldd --version
ll /lib64/libc.so.6
make install结束会出现一个错误,此错误可忽略
安装完成后检查glibc版本
如果执行yum命令卡住,可进行如下操作:
# 删除rpm数据文件
rm -f /var/lib/rpm/__db.00*
# 重建rpm数据文件
rpm --rebuilddb
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结