📌  相关文章
📜  how-to-fix-held-broken-packages (1)

📅  最后修改于: 2023-12-03 14:41:44.503000             🧑  作者: Mango

如何解决“held/broken packages”问题

什么是“held/broken packages”问题?

在 Ubuntu 系统中,当我们想要安装或更新某个软件包时,可能会遇到“held/broken packages”(被保留或损坏的软件包)问题。这种问题通常有两种表现形式:

  • 当我们执行 sudo apt-get update 命令时,命令行输出中会提示有“held”软件包;
  • 当我们执行 sudo apt-get install package_namesudo apt-get upgrade 命令时,命令行输出中会提示有“broken”软件包,并且可能会导致安装或升级失败。
如何解决“held/broken packages”问题?

在解决“held/broken packages”问题之前,我们需要了解一些相关的 apt 命令和选项:

  • apt-mark: 用于标记软件包的状态,常见的标记状态有“hold”和“unhold”;
  • apt-get: Ubuntu 系统中用于软件包管理的命令,常见的选项有“install”和“upgrade”;
  • aptitude: Ubuntu 系统中比 apt-get 命令更高级的软件包管理工具,一般情况下默认安装有。

下面介绍两种解决“held/broken packages”问题的方法:

方法一:使用 apt-mark 命令

使用 apt-mark 命令可以手动标记或取消标记软件包的状态。在解决“held/broken packages”问题时,我们可以尝试执行以下命令:

  1. 执行 sudo apt-get clean 命令,清理本地软件包缓存;
  2. 执行 sudo apt-get update 命令,获取最新的软件包列表,并查看是否有被“held”的软件包;
  3. 如果有被“held”的软件包,执行 sudo apt-mark unhold package_name 命令,取消对该软件包的保留状态;
  4. 执行 sudo apt-get upgrade 命令,尝试升级系统和软件包。

如果执行完以上步骤后依然无法解决“held/broken packages”问题,可以尝试使用 aptitude 命令。

方法二:使用 aptitude 命令

aptitude 是 Ubuntu 系统中比 apt-get 更高级的软件包管理工具,具有更强的依赖关系解析能力。使用 aptitude 命令可以尝试解决“held/broken packages”问题。执行以下步骤:

  1. 执行 sudo apt-get clean 命令,清理本地软件包缓存;
  2. 执行 sudo apt-get update 命令,获取最新的软件包列表;
  3. 执行 sudo aptitude update 命令,更新 aptitude 的软件包列表;
  4. 执行 sudo aptitude safe-upgrade 命令,尝试升级系统和软件包;
  5. 如果 aptitude 可以解决“held/broken packages”问题,执行 sudo aptitude full-upgrade 命令,将系统升级至最新版本。
总结

无论是使用 apt-mark 命令还是 aptitude 命令,都可以尝试解决“held/broken packages”问题。如果还无法解决问题,可以尝试使用其他软件包管理工具,如 dpkg。不过,在使用任何工具之前,最好备份系统数据和配置文件,以免意外情况发生。