如何阻止dpkg安装软件包过程中自动升级至其他版本
解决dpkg安装VirtualBox指定版本后被apt替换的问题
别客气!刚接触Linux遇到这种版本匹配的问题太正常了,我来一步步帮你搞定:
为什么会出现这个情况?
你用sudo dpkg -i手动安装了VirtualBox 5.1.14,但这个命令不会自动处理依赖。当你运行sudo apt install -f时,apt会默认从系统配置的软件源里拉取最新兼容版本的VirtualBox来修复依赖,所以就把你要的5.1.14替换成了5.1.32。
解决步骤
1. 重新安装你需要的VirtualBox 5.1.14版本
先确保你手里的deb包还在,执行安装命令(注意替换成你实际的deb文件名):
sudo dpkg -i ./virtualbox-5.1_5.1.14-112924~Ubuntu~xenial_amd64.deb
这时候会弹出依赖未满足的错误,不用慌,这是正常的。
2. 修复依赖但保留指定版本
不要直接用sudo apt install -f,而是明确告诉apt要修复依赖但不替换主包,命令格式如下(版本号要和你安装的deb包完全一致,你可以从deb文件名里提取):
sudo apt install -f virtualbox-5.1=5.1.14-112924~Ubuntu~xenial
这条命令会只安装满足5.1.14版本所需的依赖,而不会把VirtualBox升级到新版本。
3. 锁定版本防止后续被升级
为了避免之后运行sudo apt upgrade时又被自动升级,锁定这个包的版本:
sudo apt-mark hold virtualbox-5.1
如果之后需要解锁升级,只需执行:
sudo apt-mark unhold virtualbox-5.1
额外建议:检查并禁用VirtualBox官方源(可选)
如果你的系统里添加了VirtualBox的官方软件源,apt会优先从这里拉取新版本。你可以:
- 打开
/etc/apt/sources.list或者/etc/apt/sources.list.d/目录下的virtualbox相关文件 - 把包含VirtualBox源的行前面加上
#注释掉 - 执行
sudo apt update更新源缓存,这样apt就不会再从官方源获取新版本了
内容的提问来源于stack exchange,提问作者Blackness
相关产品推荐
相关产品推荐

