apt测评:最容易误判的7个坑
做apt测评,不能只看软件装没装上,更要检查软件源、依赖变化、缓存和升级风险。很多人把apt update当成系统升级,看到可更新数量归零就以为万事大吉,结果重启才暴露问题。这篇专门拆解那些看似正常、实际埋雷的操作。
问:apt update成功,为什么软件没升级?
因为apt update只刷新软件包索引,相当于更新「商品目录」,不会安装任何新版。真正升级要执行apt upgrade;涉及删除旧包或调整依赖时,则可能需要apt full-upgrade。做apt测评时,别拿update后的提示当升级结果,至少再看一眼apt list --upgradable,确认哪些包还在等待处理。
问:直接执行full-upgrade有什么坑?
full-upgrade为了解决依赖,允许移除已安装的软件包。内核、桌面环境、显卡驱动或第三方仓库发生冲突时,它可能提出一长串删除清单。最稳的做法不是闭眼按Y,而是先跑apt -s full-upgrade做模拟。看到ubuntu-desktop、网络组件或数据库包将被删除,就该先停下来查源和依赖。
问:为什么同一个包,别人能装我却找不到?
常见原因不是apt坏了,而是发行版版本、CPU架构或软件源组件不同。Ubuntu里的main、universe是否启用,会直接影响可用软件包。用apt-cache policy 包名可以查看候选版本和来源;再用dpkg --print-architecture确认架构。不要一上来就添加来历不明的PPA,否则短期装上了,后续升级反而更难收拾。
问:依赖损坏和锁冲突该怎么处理?
安装被断电或强行终止后,先运行dpkg --configure -a,再执行apt --fix-broken install。遇到锁占用,先用ps查看是否有apt、dpkg或系统自动更新正在运行,耐心等它结束。直接删除/var/lib/dpkg/lock-frontend是典型误操作:锁文件消失不代表后台进程停止,两个进程同时改数据库,损坏会更麻烦。
常见问题
- apt升级前怎么查看会删除哪些软件?
- 执行apt -s full-upgrade进行模拟,不会真正改动系统。重点检查REMOVED列表以及桌面、网络、驱动、数据库等关键包。
- apt提示有包被保留怎么办?
- 先用apt-cache policy 包名查看候选版本,再检查apt-mark showhold。若不是手动hold,通常是新依赖或分阶段更新导致,不建议强制安装陌生版本。
- apt clean会卸载软件吗?
- 不会。它清理的是已下载的deb缓存,不会删除已安装软件;但之后重装相关包时需要重新下载。