[犯病記] 重新安裝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
[31mFailed to build knem DEB[0m
Collecting debug info...
[31mSee /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[0m
於是我繼續查看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