Linux 系统在正常运作时表现出色,但有时也会出现错误。用户在使用 Linux 的过程中需要不断学习和解决问题。
Linux 提供了许多强大的软件包管理器。大多数用户通常会从 APT 开始,特别是当他们选择使用 Ubuntu 这种流行的操作系统时。
在使用 APT 时,你可能会遇到“无法定位软件包”的错误,尤其是在 Ubuntu 中。
本指南将详细介绍如何解决这个错误。我们将以 Ubuntu 为例进行说明。如果你使用的是其他采用 APT 包管理器的 Linux 发行版,本指南的方法同样适用。
让我们开始吧。
什么是“E: 无法找到软件包”错误?
这个错误的含义显而易见。当你尝试安装一个软件包或应用程序时,系统会提示“E: 无法找到 package_name”的错误信息。
这表示 Linux 系统无法找到你想要安装的软件包。
不必惊慌,这在 Ubuntu 或 APT 用户中是很常见的问题。
好消息是,这个问题有多种解决方案。无论你是 Linux 新手还是经验丰富的用户,都可以按照本指南解决问题。
出现“E: 无法找到软件包”错误的原因
了解错误的主要原因有助于我们更好地理解它。
在 Ubuntu 中安装软件包时,通常会使用默认的 APT 软件包管理器。可以使用 apt-get
或 apt
命令来安装。以下是执行安装的命令:
$ sudo apt-get install package-name
如果一切正常,软件包将会顺利安装。但是,有时会出现“E: 无法找到软件包 package_name”的错误,如下所示:
#output Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package package_name
当出现这个错误时,表示 Linux 系统无法找到该软件包。因此,我们需要采取措施解决这个问题,并确保它不再发生。
在尝试修复错误之前,我们先来了解一些可能导致此错误的原因:
- 软件包名称拼写错误 – 这是最常见的原因。
- 软件源列表存在问题。
- Ubuntu 存储库缓存未包含最新的软件包信息。
- 你使用的 Ubuntu 版本已过支持期。
- 你尝试安装的软件包版本不兼容你的 Linux 系统。
- 主存储库中不包含所需的软件包。
解决“无法找到软件包”错误的方法
本节将介绍多种解决此错误的方法。
#1. 软件包名称 – 你输入正确了吗?
Linux 用户常犯的一个错误是输入错误的软件包名称。如果软件包名称拼写错误,Ubuntu 将会报错。
以安装图像处理工具 Gimp 为例:
$ sudo apt-get install gump
#output $ sudo apt-get install gump Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package gump
正如预期的那样,系统会提示“E: 无法找到软件包 gump”的错误。因为根本不存在 “gump” 这个软件包。
拼写错误发生的频率比你想象的要高。Linux 对大小写敏感,即使你正确输入了包名,但大小写不正确也可能导致安装失败。例如,即使你将 gimp
误写成 Gimp
,仍然会报错。
$ sudo apt-get install Gimp
Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package Gimp
因此,安装 gimp
的唯一方法是正确输入软件包名称。
$ sudo apt-get install gimp
但是,如果你不确定软件包的确切名称怎么办?这时,你可以使用 apt search
命令来查找。例如,如果你正在查找包含 “monkey” 的软件包,但不确定其全名,可以运行以下命令:
$ apt search monkey p graphmonkey - a GTK#-based graphing calculator p libex-monkeypatched-perl - experimental API for safe monkey-patching p libmonkey-patch-action-perl - module to monkey-patching subs from other p libmonkey-patch-perl - scoped monkey-patching Perl module p libtwelvemonkeys-java - collection of plugins and extensions for J p libtwelvemonkeys-java-doc - Documentation for libtwelvemonkeys-java p monkeysphere - leverage the OpenPGP web of trust for SSH v monkeysphere-validation-agent - v node-fs-monkey - p searchmonkey - search files using regular expressions aim
#2. 更新软件包列表/存储库缓存
Ubuntu 与存储库的交互方式比较特殊。它不是下载整个存储库,而是建立一个本地缓存,其中包含可用软件包的列表。
当您运行 sudo apt update
命令时,Ubuntu 会创建本地缓存。
$ sudo apt update
执行 apt-get install
命令后,APT 软件包管理器会在缓存中查找该软件包。它会先从缓存中获取软件包的版本等信息,然后再通过网络从在线存储库下载软件包。
如果软件包未在缓存中列出,Ubuntu 会提示错误。 当你第一次安装 Ubuntu 或基于 Debian 的 Linux 发行版(如 Linux Mint)时,很可能出现这种情况。由于缓存没有使用最新信息构建,即使安装标准软件包也可能导致错误。因此,如果你是全新安装的 Ubuntu 系统,请至少运行一次 sudo apt update
命令来建立本地缓存。
在某些情况下,可能需要手动更新缓存。 这时,你需要使用 apt update
命令更新它。
在更新之前,最好清理一下缓存。为此,请运行以下命令:
$ sudo apt clean && sudo apt update
#3. 检查软件包是否可用
即使你输入了正确的软件包名称,并更新了存储库缓存,你仍然可能在 Ubuntu 中遇到“无法找到软件包”的错误。 这可能是因为你尝试安装的软件包不可用。无论你尝试多少次,都无法安装该软件包。
那么,你该怎么办?
首先,你需要了解 Universe 存储库。一般来说,Linux 系统默认不会启用它,这可能是导致错误的原因之一。另外,你使用的 Ubuntu 版本可能无法访问你要下载和安装的软件包。
要检查你的 Ubuntu 版本是否过时,你需要先查看其版本信息。可以使用以下命令:
nitt@logan99:~$ lsb_release -a
#output No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy
我正在使用最新的 22.04 LTS 版本,代号为 Jammy。 记下这些信息,然后前往Ubuntu 软件包网站。
在此页面上,你可以手动搜索软件包。 网站提供了一个搜索框,可以在其中输入关键字进行搜索。关键字可以是软件包名称,也可以是任何有助于你找到软件包的内容。
输入软件包名称并点击“搜索”按钮。
由于 gimp
是一个已知的软件包,因此可以准确找到它。
如果你仔细观察,你会发现它在 Universe 存储库中。要下载并安装这个软件包,你需要访问你的 Ubuntu 版本(这里是 Jammy 22.04 LTS)的 Universe 存储库。
确认软件包适用于你的 Ubuntu 版本后,需要启用相应的存储库。运行以下命令来启用:
$ sudo apt-add-repository universe multiverse
以上命令会启用 Universe 和 Multiverse 存储库。
完成后,请务必再次重建缓存:
$ sudo apt update
你也可以安装其他存储库,例如 Main 和 Restricted 存储库。使用以下命令执行此操作:
$ sudo apt-get-repository main $ sudo apt-get-repository restricted
如果你的 Ubuntu 版本不支持你想要安装的软件包,则需要使用第三方存储库,例如 PPA。你可以在这里了解更多信息:什么是 Ubuntu PPA 以及如何安装它?
#4. 确保你运行的是受支持的 Ubuntu 版本
Ubuntu 提供 LTS 版本,提供 3 或 5 年的长期支持。 很多用户可能会因为没有更新到受支持的版本,而无法接收任何新的更新。当你的 Ubuntu 版本不再受支持时,你将无法安装新的软件包,并且会收到“无法找到软件包”的错误。
要检查你的 Ubuntu 版本是否仍受支持,请运行以下命令:
$ hwe-support-status --verbose
#output nitt@logan99:~$ hwe-support-status --verbose You are not running a system with a Hardware Enablement Stack. Your system is supported until April 2027. nitt@logan99:~$
如你所见,我的 Ubuntu 版本支持到 2027 年 4 月。可以忽略硬件启用堆栈,它与本主题无关。
如果你的 Ubuntu 版本不受支持,只需升级到最新的 LTS 版本即可。
#5. 修复存储库
如果上述方法都无法解决“无法找到软件包”错误,则需要手动检查 Ubuntu 的源列表文件。
该文件包含了所有与存储库相关的数据。你需要访问 /etc/apt/sources.list
文件。
一般来说,你需要检查存储库的链接是否有效,并与官方列表匹配。 你可以访问官方发行版网站查找相关信息。
结论 – 如果什么都不起作用怎么办?
即使经过一番故障排除,你仍然遇到 “E: 无法找到软件包”的错误。
这会令人非常沮丧,你可能会放弃该软件包,寻找替代品,甚至考虑重新安装 Ubuntu。
在这样做之前,最好尝试所有可能的方法。例如,你可以尝试查找与你的 Ubuntu 版本兼容的旧版本软件包。可以通过第三方个人存储库 (PPA) 找到它们。
如果找不到包含该软件包的 PPA,可以查看软件的官方网站,它们通常会提供直接下载软件包文件的方法。
如果所有方法都失败了,那么最好考虑寻找替代应用程序。
本指南到此结束。我们探讨了解决“无法找到软件包”错误的各种方法。你应该已经清楚地了解了 Ubuntu 如何通过缓存与存储库交互来检索、下载和安装软件包。
接下来,可以看看 Linux 中 find 命令的最佳示例。