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