Linux 的一大优点是 适当的命令 它使您可以毫不费力地安装应用程序和软件。 使用 apt,您不必下载软件,然后通过安装程序并单击“下一步”十几次。 它确保每个软件都只使用一个终端命令安装。
但是,就像任何其他程序一样,事情可能会出错。 我们将在这篇文章中讨论的错误类似于以下内容:
E: Unable to correct problems, you have held broken packages.
当您尝试通过 apt 实用程序安装某些东西时,可能会发生此错误。 让我们详细查看错误并尝试解决问题。
是什么导致了这个错误?
一些软件(主要是第三方软件)没有兼容的依赖项,并且 apt 期望您的系统已经具有这些组件。 如果在您的系统上找不到所需的组件,apt 会抛出与损坏的软件包相关的错误,这意味着您尝试安装的软件包不完整。
过时的存储库的问题 ‘来源.列表‘ 文件,或 旧/不支持的版本 Linux的可能是这个问题的原因。
解决此问题的方法
在转向高级方法之前,让我们尝试一些可能会有所帮助的快速技巧:
方法 1:更新存储库
sudo apt update
这 apt update
是一个众所周知的命令,它可以立即更新包列表及其依赖项。 由于我们面临的问题是由于缺少依赖项,因此该命令很有可能会修复错误。
如果问题仍然存在,请尝试以下命令:
sudo apt upgrade
这会将系统上的现有软件包更新到最新版本。
方法二:用 aptitude 代替 apt
Aptitude 也是一个像 apt 一样的包管理器,它在一些 apt 不支持的情况下令人惊讶地工作! 您需要做的就是使用 aptitude
而不是恰当的。
例如, 假设你想使用安装 BIND9 aptitude
,您将必须输入以下命令:
sudo aptitude install bind9
如果您没有安装 aptitude,请运行以下命令:
sudo apt-get update sudo apt-get install aptitude
方法 3:使用 autoremove 删除不必要的包
有时,即使在卸载其父应用程序后,不必要的软件包也会留下。 这些残留的软件包可能会干扰新应用程序或库的安装。 要得到 摆脱这些不必要的残留包裹, 只是 输入以下命令 进入终端:
sudo apt autoremove
没有必要担心 autoremove
只会处理剩余的包和依赖项。
现在有了基础知识,我们将研究一些更高级的方法来解决这个问题。
方法 4:寻找持有的包裹并取消持有它们
正如错误消息所暗示的,问题是由于包裹被搁置引起的。 术语“保留包”意味着它不能以任何方式升级、删除或修改。
至 获取持有包裹的列表,您需要输入以下命令:
sudo apt-mark showhold
至 取消持有特定包裹, 进入:
sudo apt-mark unhold <package-name>
至 解开所有持有的包裹, 进入:
sudo apt-mark unhold $(sudo apt-mark showhold)
方法 5:使用突触包管理器修复损坏的包
最初,Linux 没有像 Windows 这样的内置图形包管理器。 这就是为什么突触包管理器在为个人计算机制作的基于 Debian 的发行版上变得非常流行的原因,因为它提供了一个轻量级且强大的 GUI 包管理器。
该实用程序的主要功能之一是 你可以修复损坏的包裹 非常简单地。 请按照以下步骤操作:
1.首先,安装突触包管理器:
sudo apt update sudo apt install synaptic
2. 以超级用户权限运行 synaptic:
sudo synaptic
3. 前往 编辑 > 修复损坏的包
如果存在破损的包裹,则需要一些时间。 检查问题是否已解决。
参考
- 询问 Ubuntu – 取消保留一个包
- 向 Ubuntu 线程询问相同的问题
概括
在本文中,我们看到了五种不同的方法来修复“无法纠正问题,您持有损坏的包裹”错误。 讨论的所有方法都很容易执行,我希望您能够解决系统上的问题。 如果您在尝试了上述所有方法后仍然面临同样的问题,可能是因为使用了 不受支持的 Linux 发行版,在这种情况下,您将不得不考虑升级到它的更新版本。