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


209

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

$ sudo apt-get install <package>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package <package>

谁可以帮我这个事?


5
最近发生了很多事情,因为默认情况下18.04 Server已禁用Universe,Multiverse和backport。
wjandrea

1
输入未安装的命令时,是否存在启动板问题以改进给出的有用提示?(只是暗示,这是在没有启用将是非常有益的仓库)
托尔比约恩Ravn的安德森

在构建容器(通常同时使用Docker和Singularity)时,这是我遇到的很多问题。在奇异容器中,您具有不同的BootStrap选项,其中包括debootstrapdocker。出于某种原因,如果我习惯debootstrap从基本的Ubuntu映像(例如xenial)开始,则会遇到此错误,在其中找不到某些软件包apt-get。解决方案最终是切换到dockerBootStrap,然后重新运行。
user5359531

这在过去的几天里一直在阻止我的进步,这并不是因为wjandrea建议,是因为宇宙,多重宇宙或反向端口被禁用。
Jackalope

@Jackalope然后,软件包名称可能不正确,或者您需要运行sudo apt update。使用apt-cache search后面跟一个搜索词来搜索正确的软件包名称。
mchid

Answers:


155

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

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

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

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

    在此处输入图片说明

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

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

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

    在此处输入图片说明

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

    sudo apt-get更新
    sudo apt-get安装<TEST_PACKAGE>
    

44
我发现一个简单的sudo apt-get update就足以为我修复它。你的旅费可能会改变。
爱德华·福尔克

1
sudo apt-get updateWindows 10上的Ubuntu也为我工作(这很重要,因为该答案后半部分引用的UI在该系统上不存在)。
詹姆士

1
该软件和更新截图保存了我!
Kalpesh Soni

别忘了也搜索launchpad.net
乔纳森

1
我正在从外壳运行服务器,但无法打开GUI。是否可以仅通过命令行解决此问题?
尤利西斯·阿尔维斯

81

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

如果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
    

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

  2. 要查找更多软件包的PPA:

  3. 添加PPA(通过命令行)

    使用以下命令:

    sudo add-apt-repository ppa:<repository-name>
    

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

  4. 别忘了更新(请注意更改):

    更改任何存储库后,必须运行以下命令:

    sudo apt-get update
    

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

  5. 最后安装该软件包:

    sudo apt-get install <package>
    

    请参阅命令行管理程序包

    附加提示:您可以使用找到正确的软件包名称(即存储库中的名称)apt-cache search <package-name>



注意:如果软件包在存储库上不可用,则必须等到软件包可用(对于新版本/更新版本),或者使用其他安装过程,apt-get例如从源代码进行编译,下载可执行二进制文件等。


3
在Debian / Ubuntu中的情况下libname,也可能是用户正在搜索libname2
saiarcot895 2014年

3
首先,取决于包装和您要做出许多假设。首先,假设sai指出了正确的软件包名称,如saiarcot895所指出。其次,您假设软件包可用。通常,最好先找出问题所在。然后,如果有可能,请从存储库中安装。除非有特殊需要,否则ppa是第二选择。如果该软件包不在存储库或ppa中,则可能需要从源代码进行编译。您确实没有足够的信息。
Panther 2014年

@ saiarcot895 @ bodhi.zazen:提供apt-cache search了从存储库中找到正确的软件包名称的修订答案。
潘迪2014年

真棒的回答者,您应该成为赢家
sdream

9

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

如果您具有Ubuntu 12.04,请确保已打开Universe资源库。您可以在文件/etc/apt/sources.list(和目录中的文件)中查看已启用的存储库/etc/apt/sources.list.d。检查此文件是否包含以下行

deb http://al.archive.ubuntu.com/ubuntu/ precise universe

要么

deb http://zw.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

如果只找到像

deb http://mn.archive.ubuntu.com/ubuntu/ precise main restricted

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

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


@EliahKagan我没有想过我的答案可以这样解释,我试图澄清一下。为什么不alzw?(当他们提供线索时,我会尝试为OP选择合适的镜子,但是我不知道。)
Gilles

5

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

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

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


如果在“ sudo apt-get update”行上仍然出现错误,请尝试使用“ sudo apt-get upgrade”。这将工作..伙计们!由于Linux高度区分大小写,请确保使用小写字母(例如“ sudo”而不是“ Sudo”)使用所有命令
Shaan Sundar 2012年

5

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

sudo apt-get install libstdc++.so.6

而不是包裹。您收到错误信息:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

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

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

sudo apt-get install apt-file

然后,您必须更新索引。

sudo apt-file update

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

sudo apt-file find libstdc++.so.6

然后,您会发现很多包含搜索文件的软件包。对于此示例,我仅粘贴一个搜索结果:

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

然后,您可以安装所需的软件包libstdc++6

sudo apt-get install libstdc++6
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.