前段时间(其实大概是年初)因为模型训练需要,我在我的Arch WSL发行版上装了CUDA12.8(用Arch的原因是正好工位机器上装着,而事后看这简直是最大的坑)。而归功于Arch过新的软件源,CUDA12.8无法兼容其安装的新版glibc。虽然之后我通过查找Nvidia论坛找到了解决方法(见上一篇文章),但是显然,遇到这个问题的第一想法就是尝试降级gcc了。当然,gcc作为重要的系统依赖,肯定不能随便降,因此在进行了一通查找后,我通过https://zhuanlan.zhihu.com/p/676538436这篇文章尝试了版本切换,还下载了多个不同版本的gcc pkg文件。下载好后直到安装都没有什么问题,但是安装好后问题来了,降级的gcc直接导致pacman无法正常工作。一直显示类似下面这种找不到shared library的报错,这意味着这个系统废了一半。
出现此问题后,我尝试过通过系统内pacman和其他安装器进行各种安装回原始版本的操作,但无一例外全失败了,pacman现在基本无法执行任何指令。对此我一度一筹莫展,差点直接重装了(毕竟只是WSL),直到我找到了pacman-static。这是pacman的一个预编译版本,专用来为pacman无法正常工作时进行维护。可以在chaitanyarahalkar/Pacman-Static: Precompiled and statically linked Pacman binary tools for Arch Linux.下载到。最后,我下载了pacman-static,用它重新安装了原本的gcc库(包含8-9个子依赖),重启后,机带pacman就恢复正常了。
总之,本次事故的教训有3点:1.不要随便乱动gcc;2.使用pacman-static可以在环境损坏导致pacman无法工作时对系统进行维护;3.不要用Arch训模型!