问题描述
在使用 WSL 更新软件包的时候经常会遇到这样一个报错
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
意思是说 /usr/lib/wsl/lib/libcuda.so.1 不是一个符号链接。
问题分析
通过名字可以判断这应该是nVidia显卡驱动相关的库,进入 /usr/lib/wsl/lib/ 目录,可以看到有 libcuda.so、libcuda.so.1、libcuda.so.1.1 三个文件,都是文件形式,而通过报错我们知道 libcuda.so、libcuda.so.1 应该是符号链接文件。
它们关系应该是:
libcuda.so -> libcuda.so.1 -> libcuda.so.1.1
知道原因就好解决了,把 libcuda.so、libcuda.so.1 删掉,再重新创建符号链接就可以了。
C:>cd C:\Windows\System32\lxss\lib
C:\Windows\System32\lxss\lib>del /s /q "libcuda.so"
C:\Windows\System32\lxss\lib>del /s /q "libcuda.so.1"
C:\Windows\System32\lxss\lib>mklink libcuda.so.1 libcuda.so.1.1
C:\Windows\System32\lxss\lib>mklink libcuda.so libcuda.so.1
cd C:\Windows\System32\lxss\lib
rm libcuda.so
rm libcuda.so.1
wsl -e /bin/bash
ln -s libcuda.so.1.1 libcuda.so.1
ln -s libcuda.so.1.1 libcuda.so
$ sudo ldconfig