[犯病记] 重新安装libc.so.6

发布时间 2023-04-27 21:33:46作者: CQzhangyu

[犯病记] 重新安装libc.so.6

背景:有一天,我犯了个病,试图在一个机器上安装DOCA,然后安装程序就下了一堆库,把机器上的环境搞得一团糟,原来的DPDK也不能用了。DOCA的安装程序不仅重新安装了一大堆库,还更换了系统内核版本,修改了网卡配置,以及更换了网卡驱动(MLNX_OFED)。为此我不得不将上述东西全部重装。

在我使用如下命令安装mlnx_ofed时:

sudo ./mlnxofedinstall --without-dkms --add-kernel-support --kernel 5.4.0-26-generic --without-fw-update --force

它报了如下错误:

Building DEB for knem-modules-1.1.4.90mlnx1 (knem)...
Running  /usr/bin/dpkg-buildpackage -us -uc 
Failed to build knem DEB
Collecting debug info...
See /tmp/MLNX_OFED_LINUX-5.4-3.6.8.1-5.4.0-26-generic/mlnx_iso.2856830_logs/OFED.2857070.logs/knem.debbuild.log

于是我继续查看knem.debbuild.log,看到了这个报错:

dpkg-shlibdeps: error: no dependency information found for /lib/x86_64-linux-gnu/libc.so.6 (used by debian/knem/opt/knem-1.1.4.90mlnx1/bin/knem_notify_fd_test)
Hint: check if the library actually comes from a package.

报错的意思是缺少libc.so.6的依赖信息。下面的提示说这个库可能是由一个包安装的。我不难猜想DOCA在安装的时候换掉了我的libc.so.6库,而我后来卸载了DOCA,导致依赖信息缺失。

所以,我们要做的就是重新安装一个libc.so.6,也即lic6。注意,libc6是一个相当重要的库!几乎所有linux中的程序都依赖于它,因此不能轻易地将其删除!(如果你在命令行里敲sudo apt remove libc6,它会告诉你这是一个非常危险的操作。)

使用如下命令从而安全地重装libc6:

sudo apt-get reinstall libc6