Ubuntu 某些包一直升级不了(依赖冲突)?
包反复被 hold 或依赖冲突升不上去:hold 标记是显性原因,但底下多半是源指向旧版本被卡住。本文给出查 hold、溯源、解除的顺序。
简短答案
包升不上去先查两件事:是否有显式 hold 标记、依赖是否指向旧源。apt-mark showhold 查 hold 一目了然;确认无 hold 后 sudo apt update 刷新索引,再看 apt-cache policy 该包能到的最高版本——若被锁在旧版,多半是源指向了已退役的旧版本,切回当前源即可。
现象对照
| 现象 | 判断 |
|---|---|
| 单包不动、其它正常 | 多半有 hold 标记 |
| 一片包全卡在旧版 | 源指向旧版本/退役版 |
| 依赖循环报错 | 某包需要更高版本的底层依赖 |
排查步骤
sudo apt-mark showhold # 列出被 hold 的包
sudo apt-mark unhold <包名> # 解除
sudo apt update
sudo apt-cache policy <包名> # 看可到的版本与来源
sudo apt install <包名>
源指向旧版的现场,把 apt 源切回 Ubuntu 26.04 桌面版 对应的当前源再 update;服务器基线同见 Ubuntu 服务器版 条目,源体系说明见 Ubuntu 发行条目。
操作小结
- 先
apt-mark showhold,hold 是最高优先级显性原因 apt-cache policy判断能否升到新版- 卡旧版就核对源指向,切回当前源再 update
- 解除 hold 后装回目标版本验证