/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义