Ubuntu 22.04因CUDA包依赖冲突无法完成系统更新的求助
Ubuntu 22.04因CUDA包依赖冲突无法完成系统更新的求助
我是Linux新手,之前为了做机器学习实验在Ubuntu 22.04上安装了CUDA库,但最近几周系统更新一直失败,看起来是CUDA包的依赖和文件冲突问题。以下是我的问题详情:
首先执行sudo apt update,输出正常,提示有117个包可以升级:
Get:1 file:/var/cuda-repo-ubuntu2204-11-8-local InRelease [1.575 B] Get:2 file:/var/cuda-repo-ubuntu2204-12-2-local InRelease [1.572 B] Get:3 file:/var/cuda-repo-ubuntu2204-12-3-local InRelease [1.572 B] Get:1 file:/var/cuda-repo-ubuntu2204-11-8-local InRelease [1.575 B] Get:4 file:/var/cudnn-local-repo-ubuntu2204-8.9.6.50 InRelease [1.572 B] Get:2 file:/var/cuda-repo-ubuntu2204-12-2-local InRelease [1.572 B] Get:3 file:/var/cuda-repo-ubuntu2204-12-3-local InRelease [1.572 B] Get:4 file:/var/cudnn-local-repo-ubuntu2204-8.9.6.50 InRelease [1.572 B] Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Hit:6 https://downloads.plex.tv/repo/deb public InRelease Hit:7 https://download.docker.com/linux/ubuntu jammy InRelease Hit:8 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease Hit:9 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease Hit:10 http://be.archive.ubuntu.com/ubuntu jammy InRelease Get:11 http://be.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB] Hit:12 https://repo.jellyfin.org/ubuntu jammy InRelease Hit:13 http://be.archive.ubuntu.com/ubuntu jammy-backports InRelease Hit:14 https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease Hit:15 https://ppa.launchpadcontent.net/graphics-drivers/ppa/ubuntu jammy InRelease Fetched 229 kB in 1s (205 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done 117 packages can be upgraded. Run 'apt list --upgradable' to see them.
但执行sudo apt install时,提示依赖未满足:
Reading package lists... Done Building dependency tree... Done Reading state information... Done You might want to run 'apt --fix-broken install' to correct these. The following packages have unmet dependencies: cuda-command-line-tools-12-3 : Depends: cuda-cupti-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-nvprof-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-nvtx-12-3 (>= 12.3.101) but 12.3.52-1 is installed cuda-compiler-12-3 : Depends: cuda-cuxxfilt-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-nvcc-12-3 (>= 12.3.103) but 12.3.52-1 is installed cuda-libraries-12-3 : Depends: cuda-cudart-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-nvrtc-12-3 (>= 12.3.103) but 12.3.52-1 is installed Depends: cuda-opencl-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: libcublas-12-3 (>= 12.3.4.1) but 12.3.2.9-1 is installed Depends: libcufft-12-3 (>= 11.0.12.1) but 11.0.11.19-1 is installed Depends: libcurand-12-3 (>= 10.3.4.101) but 10.3.4.52-1 is installed Depends: libcusolver-12-3 (>= 11.5.4.101) but 11.5.3.52-1 is installed Depends: libcusparse-12-3 (>= 12.2.0.103) but 12.1.3.153-1 is installed Depends: libnpp-12-3 (>= 12.2.3.2) but 12.2.2.32-1 is installed Depends: libnvjitlink-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: libnvjpeg-12-3 (>= 12.3.0.81) but 12.2.3.32-1 is installed cuda-libraries-dev-12-3 : Depends: cuda-cudart-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-cccl-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-profiler-api-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-driver-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: cuda-nvrtc-dev-12-3 (>= 12.3.103) but 12.3.52-1 is installed Depends: cuda-opencl-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: libcublas-dev-12-3 (>= 12.3.4.1) but 12.3.2.9-1 is installed Depends: libcufft-dev-12-3 (>= 11.0.12.1) but 11.0.11.19-1 is installed Depends: libcurand-dev-12-3 (>= 10.3.4.101) but 10.3.4.52-1 is installed Depends: libcusolver-dev-12-3 (>= 11.5.4.101) but 11.5.3.52-1 is installed Depends: libcusparse-dev-12-3 (>= 12.2.0.103) but 12.1.3.153-1 is installed Depends: libnpp-dev-12-3 (>= 12.2.3.2) but 12.2.2.32-1 is installed Depends: libnvjitlink-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed Depends: libnvjpeg-dev-12-3 (>= 12.3.0.81) but 12.2.3.32-1 is installed cuda-nvcc-12-3 : Depends: cuda-nvvm-12-3 (= 12.3.52-1) but 12.3.103-1 is installed Depends: cuda-crt-12-3 (= 12.3.52-1) but 12.3.103-1 is installed cuda-toolkit-12-3 : Depends: cuda-nvml-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed cuda-visual-tools-12-3 : Depends: cuda-nvml-dev-12-3 (>= 12.3.101) but 12.3.52-1 is installed E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
尝试执行sudo apt --fix-broken install时,出现文件覆盖冲突错误:
...*long code paragraphs* 101-1_amd64.deb ... Unpacking cuda-nvml-dev-12-3 (12.3.101-1) over (12.3.52-1) ... dpkg: error processing archive /tmp/apt-dpkg-install-VjvbGI/31-cuda-nvml-dev-12-3_12.3.101-1_amd64.deb (--unpack) : trying to overwrite '/usr/local/cuda-12.3/include', which is also in package cuda-cccl-12-3 12.3.52-1 No apport report written because MaxReports is reached already Errors were encountered while processing: /tmp/apt-dpkg-install-VjvbGI/00-cuda-cupti-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/01-cuda-cupti-dev-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/02-cuda-nvprof-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/03-cuda-nvtx-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/04-cuda-cuxxfilt-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/05-cuda-cudart-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/06-cuda-cccl-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/07-cuda-driver-dev-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/08-cuda-cudart-dev-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/09-cuda-nvcc-12-3_12.3.103-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/10-cuda-nvrtc-12-3_12.3.103-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/11-cuda-opencl-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/12-libcublas-12-3_12.3.4.1-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/13-libcufft-12-3_11.0.12.1-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/14-libcurand-12-3_10.3.4.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/15-libcusolver-12-3_11.5.4.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/16-libcusparse-12-3_12.2.0.103-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/17-libnpp-12-3_12.2.3.2-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/18-libnvjitlink-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/19-libnvjpeg-12-3_12.3.0.81-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/20-cuda-profiler-api-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/21-cuda-nvrtc-dev-12-3_12.3.103-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/22-cuda-opencl-dev-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/23-libcublas-dev-12-3_12.3.4.1-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/24-libcufft-dev-12-3_11.0.12.1-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/25-libcurand-dev-12-3_10.3.4.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/26-libcusolver-dev-12-3_11.5.4.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/27-libcusparse-dev-12-3_12.2.0.103-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/28-libnpp-dev-12-3_12.2.3.2-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/29-libnvjitlink-dev-12-3_12.3.101-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/30-libnvjpeg-dev-12-3_12.3.0.81-1_amd64.deb /tmp/apt-dpkg-install-VjvbGI/31-cuda-nvml-dev-12-3_12.3.101-1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
有没有人能告诉我怎么解决这个问题?
解决方案
看起来是CUDA 12.3的不同子包之间出现了版本不匹配和文件所有权冲突,尤其是cuda-cccl-12-3和cuda-nvml-dev-12-3都试图控制/usr/local/cuda-12.3/include目录。我们可以通过强制覆盖冲突文件、清理旧版本CUDA包再重新安装的方式解决:
步骤1:强制处理dpkg的冲突
首先,让dpkg允许覆盖冲突文件,执行以下命令:
sudo dpkg -i --force-overwrite /tmp/apt-dpkg-install-VjvbGI/*.deb
这个命令会强制安装所有待处理的deb包,忽略文件覆盖冲突。
步骤2:修复apt依赖问题
完成上一步后,再运行apt的修复命令来确保所有依赖都正确配置:
sudo apt --fix-broken install
步骤3:清理重复的CUDA仓库(可选但推荐)
从你的apt update输出看,你同时添加了CUDA 11.8、12.2、12.3的本地仓库,这很容易导致版本混乱。可以清理掉不需要的旧版本仓库:
- 查看所有CUDA相关的仓库文件:
ls /etc/apt
相关产品推荐
相关产品推荐

