惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

lvbibir's Blog

shell | 磁盘空间分析脚本 Linux cat 和 tee 命令写入文件 python | 使用 uv 管理你的 python 环境 Claude Code 完整配置指南 windows | mihomo 内核独立部署指南 linux | 磁盘扩容 wsl | 释放长久运行占用的磁盘空间 mysql | 线程上限问题处理 麒麟 7.6 安装谷歌 OTP 认证模块 suse 12sp5 升级 openssh 及 openssl suse 12sp5 部署 mysql 5.7 《谁的青春不迷茫》 docker | centos7 部署 docker vim | 基础配置和使用 windows | rime 输入法 & 雾凇方案 shell | sshpass 批量传输文件及执行命令 wsl | 原生 linux 方式安装 docker nodejs | fnm + pnpm 开发环境配置 wsl | 安装配置 miniconda 虚拟环境 wsl | 自动更新系统代理 wsl | bashrc 环境变量不正确加载的处理方法 wsl | win10 安装 wsl2 troubleshooting | ssh 成功但是 scp 失败 linux | 常用命令总结 docker 部署 piclist shell | 检测网站存活并自动钉钉告警 Zabbix | 监控端口连通性并自动追踪 TCP 路由 windows | 自定义开机快速启动项 windows | miniconda 配置 python 虚拟环境 Zabbix | 监控主机到指定 ip 的流量大小
troubleshooting | glibc 误升级后修复
lvbibir · 2022-07-14 · via lvbibir's Blog

1 起因

在使用 cephadm 安装 ceph v16.2 时升级了 python,系统默认版本是 3.7.4 ,升级后版本是 3.8.5,glibc 作为依赖同时进行了升级,系统默认版本是 2.28 ,升级后版本是 2.31,幸好记录及时,截图留存了软件包升级信息,如下

在没有十分把握的情况下不要用 yum install -y,使用 yum install 先判断好依赖安装带来的影响

image-20220714155604727

升级过程未出任何问题,便没在意,可是后续 openssh 由于 glibc 的升级导致连接失败,一番 baidu 加 google 未解决 openssh 连接问题,于是便着手开始降级 glibc 至系统默认版本,从系统镜像中找到 glibc 相关的三个软件包

由于是版本降级,脑子一热便采用 rpm -Uvh --nodeps glibc* 方式强制安装,至此,系统崩溃

系统几乎所有命令都无法使用,报错如下

image-20220714162721479

出现这个问题的原因大致是因为强制安装并未完全成功,lib64 一些相关的库文件软链接丢失

[root@localhost ~]# ls -l /lib64/libc.so.6
lrwxrwxrwx 1 root root 12  7月 14 14:43 /lib64/libc.so.6 -> libc-2.28.so # 恢复前这里是 libc-2.31.so

在强制安装 glibc-2.28 时, libc-2.31.so 已经被替换成了 libc-2.28.so ,由于安装失败 libc.so.6 链接到的还是 libc-2.31.so,自然会报错 no such file

2 恢复

系统绝大部分命令都是依赖 libc.so.6 的,我们可以通过 export LD_PRELOAD="库文件路径" 设置优先使用的库

export LD_PRELOAD=/lib64/libc-2.28.so

此时 ls 、cd、mv 等基础命令以及最重要的 ln 链接命令已经可以使用了,接下来就是恢复软链接

rm -f /lib64/libc.so.6
ln -s /lib64/libc-2.28.so /lib64/libc.so.6

但是 yum 命令依赖的几个库软链接还没有恢复,按照报错提示跟上述步骤一样,先删除掉依赖的库文件,再重新软链接过去

之后就是重新 yum localinstall 安装一下未安装成功的 glic ,之前强制安装时已经将高版本的 glibc 清理掉了,这里重新安装很顺利

也许之前使用 yum localinstall 安装可能就不会出现这个问题了,rpm –nodeps 也要少用~

软件包安装过程中没有报错,经测试系统一切正常,openssh 也可以正常连接了

以上