/usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
wsl中执行apt install
或apt upgrade
的时候会在最后有一个报错:
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
意思是/usr/lib/wsl/lib/libcuda.so.1
不是软链接。。。
用ll
看一下,这个确实不是软连接。不知道为啥需要这个必须是软链接。。
-r-xr-xr-x 1 root root 151K 2023-06-28 08:13:12 libcuda.so
-r-xr-xr-x 1 root root 151K 2023-06-28 08:13:12 libcuda.so.1
-r-xr-xr-x 1 root root 151K 2023-06-28 08:13:12 libcuda.so.1.1
用sha256sum
查一下这三个文件,
# sha256sum /usr/lib/wsl/lib/libcuda.so*
34550d767492d57fc143d6f1a8ac4a278904ca63287e3b4e3212bbab6edd73df /usr/lib/wsl/lib/libcuda.so
34550d767492d57fc143d6f1a8ac4a278904ca63287e3b4e3212bbab6edd73df /usr/lib/wsl/lib/libcuda.so.1
34550d767492d57fc143d6f1a8ac4a278904ca63287e3b4e3212bbab6edd73df /usr/lib/wsl/lib/libcuda.so.1.1
这三个文件其实是一样的。
手动创建
简单点,可以直接把libcuda.so.1
备份一下,用ln -s
创建一个软链接放这就好了。
但是这样治标不治本,这个是wsl依赖的库,每次重启wsl的时候,会被重置。因为每次启动wsl时会自动挂载。
修改配置
修改配置,wsl 官方 github issue 5548 中有回复,如下:
-
修改配置
/etc/wsl.conf
禁用自动挂载[automount] ldconfig = false
-
复制
/usr/lib/wsl/lib
到/usr/lib/wsl2/lib
-
修改配置文件
/etc/ld.so.conf.d/ld.wsl.conf
,手动指定ldconfig依赖库位置为上面的新目录/usr/lib/wsl2/lib
-
删掉文件:
rm /usr/lib/wsl2/lib/libcuda.so.*
,然后执行一下:sudo ldconfig
我没试过这个方法,对有些人来说时有效的
需要重启wsl
直接改windows下的文件
这个自动挂载实际是把C:\Windows\System32\lxss\lib
下的文件拿过来了。直接修改原目录的原文件不就得了
进入windows下这个目录,删掉有问题的那个文件,打开cmd执行:
mklink libcuda.so.1 libcuda.so
或者
在wsl中,直接修改/mnt/c/Windows/System32/lxss/lib
下面的文件。删掉有问题的文件,然后创建软链接代替。
不过应该没有权限,🤣
需要重启wsl