尝试使用 APT 安装软件包时“无法找到软件包”

Cod*_*eky 283 package-management apt

当我尝试通过命令行安装任何软件包时,出现错误。

$ sudo apt-get install <package>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package <package>
Run Code Online (Sandbox Code Playgroud)

谁可以帮我这个事?

kir*_*iri 194

首先,检查包是否确实存在:

  1. 使用 Web 浏览器访问packages.ubuntu.com
  2. 向下滚动到“搜索包目录”
  3. 在“关键字”字段中输入您尝试安装的软件包。

    启用“仅显示完全匹配:”

    将“发行版”更改为您使用的 Ubuntu 版本。

    在此处输入图片说明

如果没有结果,则您要查找的包不存在,接下来的步骤将不起作用。它可能需要第三方 PPA 或替代安装方法。

如果找到结果,则该包存在,您可以继续执行以下步骤:

  1. 通过在 Dash 中搜索来打开软件源(或13.04+ 中的软件和更新)。
  2. 打开“Ubuntu 软件”选项卡。
  3. 确保启用此选项卡上的前 4 个复选框:

    在此处输入图片说明

  4. 更新包列表,然后使用以下命令进行测试:

    sudo apt-get 更新
    sudo apt-get install <TEST_PACKAGE>
    

  • 我发现一个简单的 `sudo apt-get update` 足以为我修复它。你的旅费可能会改变。 (74认同)
  • `sudo apt-get update` 在 Windows 10 上的 Ubuntu 上也对我有用(这很重要,因为该答案后半部分引用的 UI 在该系统上不存在)。 (3认同)
  • 我正在从 shell 运行我的服务器,并且无法打开 GUI。是否可以仅通过命令行解决此问题? (2认同)

Pan*_*dya 106

关于这个话题有很多问题。在这里,我提供一个基本/一般的答案。

apt-get install无法找到包时,在您添加的存储库中找不到要安装的包(在 中/etc/apt/sources.list和下的那些/etc/apt/sources.list.d/)。

以下(一般)过程有助于解决这个问题:

  1. 确保您已启用 Ubuntu 存储库:

    要启用所有存储库(mainuniverserestrictedmultiverse),请使用以下命令:

    sudo add-apt-repository main
    sudo add-apt-repository universe
    sudo add-apt-repository restricted
    sudo add-apt-repository multiverse  
    
    Run Code Online (Sandbox Code Playgroud)

    访问帮助以获取更多信息。

  2. 寻找更多包的 PPA:

    • 转到Ubuntu 包搜索(已经在这个答案中解释了)
    • 如果您无法找到的包来自 PPA,请转到 PPA 并检查它是否可用于您的版本。
    • 对于外部存储库,请访问Ubuntu 更新并搜索 屏幕按钮。或访问 PPA
    • 或在Launchpad ppa 中搜索
    • 根据您的 Ubuntu 发行版找到合适的 ppa
  3. 添加 PPA(通过命令行)

    使用这个命令:

    sudo add-apt-repository ppa:<repository-name>
    
    Run Code Online (Sandbox Code Playgroud)

    访问Ubuntu 社区帮助以获取更多信息。

  4. 不要忘记更新(让您知道您的更改):

    在更改任何存储库后运行此命令至关重要:

    sudo apt-get update
    
    Run Code Online (Sandbox Code Playgroud)

    选择最佳下载服务器可能有助于加快更新速度。

  5. 最后安装包:

    sudo apt-get install <package>
    
    Run Code Online (Sandbox Code Playgroud)

    请参阅通过命令行进行包管理

附加/提示:您可以使用apt-cache search <package-name>.


  • 相关常见问答:
  1. 添加 PPA 后如何解决未满足的依赖项?
  2. “Package <package> 没有安装候选”是什么意思?

注意:如果软件包在存储库中不可用,那么您必须等到它可用(在新版本/更新版本的情况下)或使用其他安装过程,apt-get例如从源代码编译、下载可执行二进制文件等。

  • 也可能是用户正在搜索“libname”,而在 Debian/Ubuntu 中它是“libname2”。 (3认同)
  • 首先,取决于包,并且您正在做出一些假设。首先,您假设 OP 已经确定了正确的包名称,正如 saiarcot895 所指出的那样。其次,您假设软件包可用。一般来说,最好先确定问题。然后,如果可能的话,从存储库安装。除非有特殊需要,ppa 是第二选择。如果包不在存储库或 ppa 中,则可能需要从源代码编译。你真的没有足够的信息。 (3认同)

np8*_*np8 16

全新安装 Ubuntu?

很多时候,只需更新所有存储库和 PPA 中的包列表即可解决问题:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

这应该是首先要做的事情。

如果这不起作用,您需要搜索包含您要查找的包的存储库或 PPA,添加它,然后sudo apt-get update再次运行。本页的其他答案对此过程的步骤进行了很好的解释。


Gil*_*il' 9

xbmc仅在Universe 存储库中可用,仅从 Ubuntu 12.04(精确)开始。如果您有旧版本的 Ubuntu,则需要升级或从其他地方获取 xbmc。

如果您有 Ubuntu 12.04,请确保您已打开 Universe 存储库。您可以看到您在文件/etc/apt/sources.list(以及目录中的文件)中启用了哪些存储库/etc/apt/sources.list.d。检查此文件是否包含类似的行

deb http://al.archive.ubuntu.com/ubuntu/ precise universe
Run Code Online (Sandbox Code Playgroud)

或者

deb http://zw.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
Run Code Online (Sandbox Code Playgroud)

如果你只找到一条线

deb http://mn.archive.ubuntu.com/ubuntu/ precise main restricted
Run Code Online (Sandbox Code Playgroud)

并且没有带有 的行universeuniverse在该行的末尾添加,或者单独的一行带有precise universe,如上图所示。

如果需要修改/etc/apt/sources.list,请sudo apt-get update稍后运行,然后再次尝试安装。如果仍然没有找到包,请发布完整的内容/etc/apt/sources.list和输出sudo apt-get update


BuZ*_*dEE 6

在尝试安装文件的情况下:

sudo apt-get install libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)

而不是一个包。您收到错误消息:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'
Run Code Online (Sandbox Code Playgroud)

因为您尝试安装无法安装的文件libstdc++.so.6,因为它位于 debian 软件包中。

您可以使用apt-file搜索包含该文件的包。要安装它,请键入:

sudo apt-get install apt-file
Run Code Online (Sandbox Code Playgroud)

然后你必须更新索引。

sudo apt-file update
Run Code Online (Sandbox Code Playgroud)

之后,您可以搜索包含该文件的包libstdc++.so.6

sudo apt-file find libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)

然后你会发现很多包含搜索文件的包。在这个例子中,我只粘贴了一个搜索结果:

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)

然后你可以安装所需的包libstdc++6

sudo apt-get install libstdc++6
Run Code Online (Sandbox Code Playgroud)


小智 5

我是 Ubuntu 的新手,但我写这篇文章是因为我发现了一些解决方案来避免这种“无法找到包”错误。在三种情况下可能会发生这种情况。

  1. 安装 Ubuntu 后,如果您不更新它,然后进行升级,则可能会发生这种情况。
  2. 如果将来要进行大量软件更新,请确保通过按+键入“更新管理器”来关闭所有重要的安全更新/推荐更新。AltF2
  3. 即使在更新或清除所有更新后,问题一和二也可能发生。但永恒的解决方案是:尝试第 1 点和第 2 点,然后键入sudo apt-get killmanager,如果不起作用sudo apt-get update,则继续键入,然后键入sudo apt-get upgrade

现在您应该可以通过终端安装任何软件。