/usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

wsl中执行apt installapt 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 中有回复,如下:

  1. 修改配置/etc/wsl.conf禁用自动挂载

    [automount]
    ldconfig = false
    
  2. 复制/usr/lib/wsl/lib/usr/lib/wsl2/lib

  3. 修改配置文件/etc/ld.so.conf.d/ld.wsl.conf,手动指定ldconfig依赖库位置为上面的新目录/usr/lib/wsl2/lib

  4. 删掉文件: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

posted @ 2024-07-20 17:09  嘘,别吵  阅读(238)  评论(0编辑  收藏  举报