问题背景:
今天在配置GRPC环境的过程中需要从github下取一些资源,但是当执行了安装命令后,Ubuntu报了提示执行apt --fix-broken install的错误。
命令行给出了以下提示,说明我需要安装的包之间没有依赖关系
The following packages have unmet dependencies: nvidia-cuda-toolkit:
Depends: nvidia-cuda-dev (= 9.1.85-3ubuntu) but it is not going to be
installed.
问题现象:
当提示执行apt --fix-broken install命令后,我尝试执行了此命令,同时也搜索了相关问题的处理方法:
- 按照命令提示运行
sudo apt --fix-broken install
- 当提示重写文件发生冲突时,选择强制重写文件
sudo dpkg -i --force-overwrite [文件名]
- 继续执行
sudo dpkg -P [文件]
- 如果以上步骤都不行,尝试移除文件,重新安装
sudo dpkg -P nvidia-cuda
如果大家尝试以上四个步骤后能够成功解决,那么恭喜大家。但是我在执行了第一步后却发现了我的问题好像并不在于重写文件是否发生了冲突。
Ubuntu先是报了连接失败,然后又报了无法下载的错误,并且最后提示运行apt-get update 或者命令行后加上 --fix-missing 再继续执行,在我都尝试了以后发现两种办法都没有效果。
根据所报错误,基本得知是由于Ubuntu默认的服务器源mirrors.ubuntu.com但是由于墙的存在,导致它不太稳定,于是需要将服务器源更改为国内的源,例如:阿里云、腾讯云、华为云等。
具体操作:
1、备份配置文件:
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
2、修改sources.list文件,将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com,可以参考如下命令:
sudo sed -i “s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g” /etc/apt/sources.list
sudo sed -i “s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g” /etc/apt/sources.list
3、执行apt-get update更新索引
将服务器源切换至国内后,重新执行sudo apt --fix-broken install时便可以成功了,并且也可以成功下载各种资源了。