背景
公司环境有台机器硬盘故障,需要安装megacli工具进系统查看raid信息,在ubuntu20.04安装megacli解决依赖过程中失误将高版本的libtinfo包装系统上了,导致系统报glibc对应的版本没有找到,系统实际glibc的版本是2.31。
解决办法
如果系统的ssh没有断开,可以将原来版本的libtinfo文件删除,并重新软链接。
cd /lib/x86_64-linux-gnu/
rm -rf libtinfo.so.6
ln -s libtinfo.so.6.2 libtinfo.so.6
但是很遗憾,ssh和接显示器都登录不到系统上了,单用户也进不去,安装的ubuntu server 20.04也没有live cd,不过好在ubuntu 20.04 desktop版本用的核心库版本和server是一样的,可以使用ubuntu 20.04 desktop做live CD。
使用ubuntu 20.04 desktop 制作live CD修复
插入制作好的启动盘,选择try ubuntu without installing。
进入liveCD之后切换到root用户,将硬盘上的文件系统挂载到/mnt目录上。
sudo -i
mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt
cd /mnt/lib/x86_64-linux-gnu
将原来版本的libtinfo文件删除,并重新软链接到6.2版本上去。
rm -rf libtinfo.so.6
ln -s libtinfo.so.6.2 libtinfo.so.6
之后切换根目录为/mnt,使用绝对路径重新软链接一次。
chroot /mnt
cd /lib/x86_64-linux-gnu
rm -rf libtinfo.so.6
ln -s /lib/x86_64-linux-gnu/libtinfo.so.6.2 /lib/x86_64-linux-gnu/libtinfo.so.6
exit
reboot
重启系统问题解决
以上是由于安装依赖版本问题导致glibc版本报错的解决办法和思路。