安裝 CUDA 出現 Depends: cuda-11-7 (>= 11.7.0) but it is not going to be installed 解決方法

最近我同事在更新 CUDA 發生了一個使用 apt 無法升級的情況錯誤的 Log 如下

$ sudo apt -y install cuda
The following packages have unmet dependencies:
 cuda : Depends: cuda-11-1 (>= 11.1.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

通常遇到這個問題普遍去 Google 尋找答案都會得到一個結果,就是把 apt 重新整理的指令,包括移除 apt 的暫存更新 apt 並且移除 CUDA,最後在重新安裝。

sudo apt clean
sudo apt update
sudo apt purge nvidia-* 
sudo apt autoremove
sudo apt install -y cuda

如果電腦裡面沒有裝圖形化介面通常這樣可以解,不過如果有裝圖形化介面如此的方法是解不了的,因為圖形化介面會吃住它,因此沒辦法移除。那怎麼解決呢?

方法一

如果目前的系統是使用圖像介面介面開啟系統,系統就會咬住顯卡驅動讓我們沒辦法更新驅動,所以要更新驅動就要讓系統改成預設使用終端機模式開啟。而轉換指令如下:

sudo systemctl set-default multi-user.target
sudo reboot 0

重新啟動後移除所有 NVIDA 的套件,然後使用下方的方法下載 runfile 後重新安裝 CUDA 或是使用安裝 CUDA Toolkit 11.7 重新安裝 CUDA,這次安裝就不會再出現錯誤了。

sudo apt purge nvidia*
sudo apt autoremove
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run

安裝成功後記得把圖形介面再開回來,並且重新啟動回復系統原本的設定。

sudo systemctl set-default graphical.target
sudo reboot 0

方法二

除了方法一之外還可以使用第二種方法,手動關閉所有使用 GPU 的程式,不過此方法不一定會成功,還是使用前面的方法比較安全。

關閉所有裝置後並且停止載入 NVIDIA 驅動程式 ,完成後使用安裝 CUDA Toolkit 11.7 安裝程式

sudo systemctl isolate multi-user.target
sudo modprobe -r nvidia-drm

參考資料