今天将验证码库升级了SkiaSharp最新版,部署到服务器上出现了version `GLIBC_2.29’ not found,网上找了很多教程,不确定哪个适合,最终实现了升级处理,现在把过程发出来。
1、使用strings命令查看当前glibc支持的版本
# 使用strings命令查看
strings /lib64/libc.so.6 |grep GLIBC_
# 查看结果如下:
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
发现只能到2.17
执行ldd --version也会看到glibc版本是2.17

注意:
在操作之前一定要备份重要数据。
下面开始正式一步一步的进行升级。
一、查看当前内核版本
uname -r
3.10.0-1160.45.1.el7.x86_64
二、libc版本查看
rpm -q glibc
glibc-2.17-326.el7_9.3.x86_64
ldd --version
ldd (GNU libc) 2.17
三、配置环境版本
make -v
GNU Make 3.82
gcc -v
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
GCC版本要升级到至少7.3版本以上(可以看公众号其他文章),Make要4.2.1及以上。
# 安装依赖
sudo yum install -y gcc gcc-c++ wget tar bzip2
# 下载Make源码
wget https://ftp.gnu.org/gnu/make/make-4.4.tar.gz
# 解压
tar -xzvf make-4.4.tar.gz
cd make-4.4
# 配置
./configure
# 编译
make
# 安装
sudo make install
# 验证
make --version
四、Python版本
python3 -V
Python 3.8.13
如果Python没有安装的话可以按下面的方式安装
# 安装SCL仓库
sudo yum install -y centos-release-scl
# 安装Python 3
sudo yum install -y rh-python38
# 启用Python 临时生效
scl enable rh-python38 bash
# 启用Python 永久生效 在~/.bash_profile中增加内容。
# 只在 SCL Python 环境存在时才加载
if [ -f /opt/rh/rh-python38/enable ]; then
source /opt/rh/rh-python38/enable
export PATH=$PATH:/opt/rh/rh-python38/root/usr/bin
fi
添加后记得使用source ~/.bash_profile使配置生效,可以通过echo $PATH验证路径是否正确添加
五、bison安装
yum install -y bison
六、开始编译GLIBC源码并安装,此步要特别留意。
1、下载GLIBC源代码:
wget http://ftp.gnu.org/gnu/libc/glibc-2.32.tar.gz
tar xvf glibc-2.32.tar.gz
cd glibc-2.32
创建构建目录并进入:
mkdir build
cd build
2、配置构建(您可能需要指定不同的-prefix):
../configure --prefix=/usr
3、编译并测试(测试步骤非常重要,确保新的库不会破坏系统):
make -j$(nproc)
make check
如果make check有报错的情况,可以考虑执行下面的命令来确保安装了GLIBC所需的所有开发工具和库。make check有报错也有可能是gcc版本太低,要安装高版本的gcc。
sudo yum groupinstall "Development Tools"
sudo yum install glibc-devel
4、安装新的GLIBC(十分危险,如果出错可能会导致系统不可用):
sudo make install
5、查看是否安装成功
ldd --version
目前已成功在2台服务器上操作成功,但还是需要谨慎操作!
