You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Server 22.04下手动升级APT追踪软件包后的相关问题咨询

Ubuntu Server 22.04下手动升级APT追踪软件包后的相关问题咨询

嘿,作为经常折腾Ubuntu的老玩家,太懂这种PPA掉链子的糟心情况了!我来给你拆解手动升级后会遇到的各种情况,以及怎么避免踩坑:

  • APT会不会追踪你手动安装的版本?
    这要看你怎么处理那个tar.gz里的二进制:

    • 如果只是把解压出来的二进制文件直接放到/usr/local/bin或者自己用户目录的~/bin里,APT完全“看不见”这个版本——它只认自己通过deb包安装的文件,手动放的二进制不在它的追踪列表里。
    • 要是这个tar.gz里附带了官方打包的deb文件(有些项目会同时提供),你用dpkg -i安装的话,APT会识别这个版本号。如果这个deb的版本比PPA里的旧版本高,APT会把这个包标记为“手动安装”,后续PPA修复构建出更高版本时,会正常升级;如果版本号和PPA里的一致,APT会认为已经是最新状态。
  • APT会不会拒绝更新?
    分两种情况来看:

    • 要是你直接用的裸二进制(没装deb),APT还是觉得你系统里装的是PPA的旧版本,以后PPA修复后,apt upgrade会正常升级系统里的那个旧版本。但这时候如果你的手动二进制在PATH里优先级更高(Ubuntu默认/usr/local/bin比/usr/bin靠前),你运行命令时会优先用手动的版本,但系统里其实同时存在两个版本。
    • 要是你装了官方deb,APT会对比版本号:如果deb版本更高,APT不会主动更新,除非PPA出了更高版本;如果deb版本和PPA一致,那和正常通过APT安装没区别。
  • 会不会出现两个实例?
    处理不好的话大概率会:

    • 最常见的是“文件共存”:APT装的二进制在/usr/bin,手动的在/usr/local/bin,两个版本同时存在,运行时看PATH优先级决定用哪个。
    • 要是你图省事把手动二进制直接覆盖了/usr/bin里APT安装的文件,那下次apt upgrade的时候,APT会把这个文件替换回PPA的版本,相当于你的手动升级白做了。

给你的实用建议

  1. 临时救急方案:把解压后的二进制放到自己用户目录的~/bin(没有的话直接新建),Ubuntu默认已经把~/bin加入PATH了,这样只有你自己的用户会用到这个新版本,系统级的APT包不受影响,以后PPA修复了直接删掉~/bin里的文件就行。
  2. 长期使用方案:如果打算一直用手动版本,先运行sudo apt hold <你的包名>,把APT里的包锁住,防止它自动升级覆盖你的手动文件。等以后PPA修复了,再用sudo apt unhold <你的包名>解锁,就能正常升级了。
  3. 优先选deb包:如果项目Github上提供了对应Ubuntu 22.04的deb包,别用裸二进制,直接用sudo dpkg -i 你的包.deb安装,这样APT能正常追踪版本,后续升级也不会出问题。

备注:内容来源于stack exchange,提问作者Dimitris Sfounis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:09:33