安装包失败导致apt-get无法正常工作。

我刚刚第一次安装了Ubuntu 18.04。为了玩一些GPU代码,我通过Nvidia CUDA页面上描述的“deb(本地)”选项安装了CUDA,这个选项是针对17.10版本的。我知道17.10和18.04不一样,但我听说有人成功地使用了这种方法。 我按照Nvidia提供的安装说明进行了操作。
sudo dpkg -i cuda-repo-ubuntu1710-9-2-local_9.2.88-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda
最后一条命令在安装nvidia-396时出现错误。
Get:1 file:/var/cuda-repo-9-2-local  nvidia-396 396.26-0ubuntu1 [80.0 MB]
(Reading database ... 167630 files and directories currently installed.)
Preparing to unpack .../nvidia-396_396.26-0ubuntu1_amd64.deb ...
Unpacking nvidia-396 (396.26-0ubuntu1) ...
dpkg: error processing archive /var/cuda-repo-9-2-local/./nvidia-396_396.26-0ubuntu1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0', which is also in package libglx-mesa0:amd64 18.0.0~rc5-1ubuntu1
Errors were encountered while processing:
 /var/cuda-repo-9-2-local/./nvidia-396_396.26-0ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
也许我贪多嚼不烂,所以我决定转向一些不那么具有挑战性的事情。我继续安装了一些基本的软件包,比如git,但在这样做时,我遇到了以下错误:
> sudo apt-get install git
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 cuda-drivers : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 git : Depends: liberror-perl but it is not going to be installed
       Depends: git-man (> 1:2.17.1) but it is not going to be installed
       Depends: git-man (< 1:2.17.1-.) but it is not going to be installed
 libcuda1-396 : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 nvidia-396-dev : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 nvidia-opencl-icd-396 : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
尝试建议的sudo apt --fix-broken install命令会导致遇到上面相同的nvidia-396错误。 看起来我尝试安装cuda导致apt-get处于一种状态,它将不再安装或删除任何软件包,因为存在未满足的依赖关系错误。简单地说,安装cuda已经完全破坏了apt-get。 如何使我的软件包管理器重新工作?

试过sudo apt-get purge nvidia*,但没有成功。 - StrugglingProgrammer
你运行了 sudo apt --fix-broken install 吗?在你的问题中,你忽略了 sudo - MatsK
是的。它导致了之前提到的相同错误。 - StrugglingProgrammer
当你写下"I know 17.10 != 18.04, but I had read of people having success with this." 的时候,他们是遵循NVIDIA的方式还是像这样安装的? https://askubuntu.com/questions/1030886/how-do-i-install-the-nvidia-cuda-toolkit-on-18-04-with-coffee-lake-is-it-suppo/1030901 - MatsK
@MatsK - 注意,这个问题是询问如何使apt再次工作(无需重新安装操作系统),而不是安装CUDA工具包。 - StrugglingProgrammer
我尝试按照我在原问题中描述的方式安装CUDA。 - StrugglingProgrammer
4个回答

我只用以下方法解决了这个问题:
sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken

这解决了我的问题。 - temple
5它也解决了我的问题,但是能够给出一个解释会更好。不管怎样,非常感谢你提供的解决方案! - Lucas Azevedo
谢谢这个。 - malanb5
真是个魔术师。谢谢。 - wbadry
1这对我也起作用了,但我们能否得到一些关于它究竟在做什么的详细信息? - clifgray
对我来说没起作用。出现了以下错误: nvidia-dkms-418 nvidia-driver-418 cuda-drivers cuda-runtime-10-1 cuda-demo-suite-10-1 cuda-10-1 cuda E: 子进程 /usr/bin/dpkg 返回错误代码 (1) - Lawhatre

与StrugglingProgrammer的命令类似,我必须确保卸载所有 cuda软件包(例如cuda-demo*)。 您可以使用以下命令来检查可能的软件包:
dpkg -l | grep -i cuda
dpkg -l | grep -i nvidia
所以也许可以尝试一下
sudo apt-get remove --purge cuda-* libcuda* nvidia* 
(对于整个批次)或者更具体地选择,比如:
sudo apt-get remove --purge cuda-drivers libcuda* cuda-runtime* cuda-8-0 cuda-demo*
对我来说,特别是在尝试安装失败的 cuda-8-0libcudnn6 之后,解决方法如下:
sudo apt-get remove --purge nvidia* cuda-drivers libcuda* cuda-runtime* cuda-8-0 cuda-demo*
希望这能有所帮助。

我通过在一个单独的apt-get remove命令中移除所有已安装的内容来解决了这个问题。
sudo apt-get remove --purge nvidia* cuda-drivers libcuda1-396 cuda-runtime-9-2 cuda-9.2 cuda-demo-suite-9-2  cuda

我也尝试了remove --purge的方法来修复我的损坏安装,但是重新安装后,我遇到了跟你第一次一样的错误。对你而言,它是“只是工作了”吗? - escapecharacter
解决方案:我试图在18.04上安装,但放弃了并下载了16.04,将尝试使用这个版本。 - escapecharacter

我执行了
sudo add-apt-repository ppa:graphics-drivers
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda_learn.list'
(b)安装CUDA 10.1软件包,包括CuDNN库。
sudo apt update
sudo apt install cuda-10-1
sudo apt install libcudnn7
检查一下这个链接,我没有删除任何驱动程序,只是安装了一些东西并更新了.profile文件。
nano ~/.profile
# set PATH for cuda 10.1 installation
if [ -d "/usr/local/cuda-10.1/bin/" ]; then
    export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
fi

  • 相关问题