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

嘘,别吵發表於2024-07-20

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

相關文章