安装cudf依赖CUDA时遇dpkg跨设备链接错误,求解决
解决CUDA依赖安装中的"Invalid cross-device link"错误
问题背景
我在参加Kaggle OTTO Recommendation System竞赛时,尝试安装高排名选手使用的cudf库,过程中遇到依赖问题:
初始错误提示:
E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify & solution)
执行sudo apt --fix-broken install后触发如下错误:
dpkg: error processing archive /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb (--unpack): unable to make backup link of './usr/bin/nvidia-cuda-mps-control' before installing new version: Invalid cross-device link dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) Preparing to unpack .../nvidia-utils-470_470.57.02-0ubuntu1_amd64.deb ... Unpacking nvidia-utils-470 (470.57.02-0ubuntu1) ... dpkg: error processing archive /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-utils-470_470.57.02-0ubuntu1_amd64.deb (--unpack): unable to make backup link of './usr/bin/nvidia-debugdump' before installing new version: Invalid cross-device link dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) Errors were encountered while processing: /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-utils-470_470.57.02-0ubuntu1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
尝试sudo dpkg -i --force-overwrite /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb后仍报错:
(Reading database ... 31 files and directories currently installed.) Preparing to unpack .../nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb ... Unpacking nvidia-compute-utils-470 (470.57.02-0ubuntu1) ... dpkg: error processing archive /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb (--install): unable to make backup link of './usr/bin/nvidia-cuda-mps-control' before installing new version: Invalid cross-device link dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) Errors were encountered while processing: /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb
解决方案
方法1:禁用dpkg备份链接功能
错误根源是dpkg尝试跨存储设备创建文件备份链接,直接跳过备份步骤即可:
- 执行以下命令强制安装deb包并禁用备份:
sudo dpkg -i --force-overwrite --no-backup-if-mismatch /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-compute-utils-470_470.57.02-0ubuntu1_amd64.deb sudo dpkg -i --force-overwrite --no-backup-if-mismatch /var/cuda-repo-ubuntu1804-11-4-local/./nvidia-utils-470_470.57.02-0ubuntu1_amd64.deb
- 完成后修复剩余依赖:
sudo apt --fix-broken install
方法2:手动移走冲突文件
如果方法1无效,可临时将冲突文件转移到同一分区:
- 备份冲突文件到临时目录:
sudo mv /usr/bin/nvidia-cuda-mps-control /tmp/ sudo mv /usr/bin/nvidia-debugdump /tmp/
- 重新执行依赖修复命令:
sudo apt --fix-broken install
- 安装完成后,新包会自动替换这些文件,无需手动恢复备份。
方法3:全局禁用dpkg备份链接
若系统中/usr和/var属于不同分区,可永久修改dpkg配置避免此类问题:
- 查看分区挂载情况确认:
df -h
- 创建并编辑dpkg配置文件:
sudo nano /etc/dpkg/dpkg.cfg.d/01-nobackup
- 添加以下内容:
no-backup-if-mismatch
- 保存退出后,重新执行依赖修复:
sudo apt --fix-broken install
内容的提问来源于stack exchange,提问作者doyeon Lee
相关产品推荐
相关产品推荐

