apt-get升级逻辑及解决方法

看到你的问题了,这个行为是 apt-get upgrade 命令的正常设计逻辑。让我解释一下原因和解决方法:

为什么指定了 fd-find 却要升级其他包?

  1. fd-find 已经是最新版:
    • 输出 fd-find is already the newest version (8.3.1-1ubuntu0.1). 明确告诉你 fd-find 不需要升级。
  2. apt-get upgrade 的工作方式:
    • 核心逻辑: sudo apt-get upgrade 命令的核心作用是 升级 所有 可用的、有更新的已安装软件包
    • 指定包名的含义: 当你加上一个包名(如 fd-find)时,apt-get 会这样理解:
      • 如果 这个指定的包有更新可用,那么升级它。
      • 同时,也升级所有 其他 有更新可用的、并且升级操作 不会 导致新包安装或已有包卸载的软件包。
    • 在你的情况中: 因为 fd-find 没有更新(已经是最新),所以它被跳过。但系统检测到 docker-ce, git, google-chrome-stable, ubuntu-advantage-tools另外 11 个软件包 有更新可用,并且这些更新符合 upgrade 操作的安全规则(不需要安装新包或卸载旧包)。因此,apt-get 准备升级这 11 个包。

总结关键点:

  • apt-get upgrade [包名] 的意思是:“尝试升级这个包(如果有更新的话),并且不管这个包有没有更新,都同时升级所有其他可以安全升级的包。
  • 你指定的 fd-find 没有更新,所以它没有被操作。
  • 系统发现其他 11 个包有更新,并且这些更新符合 upgrade 的条件,所以准备升级它们。
  • 这就是为什么你看到它要下载那么多(186 MB)并升级那么多包的原因。

如何只升级 fd-find(如果将来有更新)?

如果你真的想升级 fd-find 这一个包(当它确实有更新时),并且升级其他任何包,你需要使用 install 命令并加上 --only-upgrade 选项:

sudo apt-get install --only-upgrade fd-find

这个命令的意思是: “如果 fd-find 有可用的更新版本,就只升级它,不要升级其他任何包。” 如果 fd-find 已经是最新版,它会告诉你无需操作。

关于你输出中的其他信息:

  1. Use 'sudo apt autoremove' to remove them.

    • 这些列出的包是之前安装其他软件时自动安装的依赖,但现在没有任何软件再依赖它们了,成了“孤儿包”。
    • 运行 sudo apt autoremove 可以安全地移除这些不再需要的包以释放磁盘空间。建议执行一下。
  2. The following packages have been kept back: bear libear

    • 这两个包有更新可用,但 apt-get upgrade 无法安全地升级它们,通常是因为升级它们需要安装新的依赖包或卸载现有包(这超出了 upgrade 的安全边界)。
    • 要升级这些被保留的包,你需要使用 sudo apt-get dist-upgrade 命令。这个命令更智能,允许添加新依赖或移除旧包来完成升级。但在执行 dist-upgrade 前,最好理解它可能带来的变化(特别是生产环境)。

如何应对当前情况?

  1. 如果你想升级所有列出的包 (docker-ce, git, chrome 等):
    • 直接按 Y 然后回车继续执行你中断的那个命令 (sudo apt-get upgrade)。
  2. 如果你 关心 fd-find 并且它是最新的:
    • 你已经达到目的了,fd-find 是最新版。你可以按 n 然后回车取消升级其他包(虽然你这次用了 Ctrl+C)。
    • 记住,下次只想升级单个包且不升级其他包时,使用 sudo apt-get install --only-upgrade fd-find
  3. 清理空间 (推荐):
    • 运行 sudo apt autoremove 移除不再需要的包。
  4. 处理被保留的包 (可选):
    • 如果你想升级 bearlibear,运行 sudo apt-get dist-upgrade。仔细查看它会做什么操作后再确认。

简单来说:apt-get upgrade 即使指定了包名,也总是会尝试升级所有可升级的包(除了那些被保留的)。要精确只升级一个包,必须使用 apt-get install --only-upgrade <包名>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值