“但是被另一个包引用。”-查找该包


24

Ubuntu(或具有apt软件包管理的其他发行版)用户遇到错误的情况并不罕见:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

在各个StackExchange网站上都曾对此提出过几个问题,例如AskUbuntu上的openvpn,但这些问题通常是关于如何获取特定软件包的信息,尽管存在错误。

通过确定它是否仍在分发,以及是否在哪个存储库中,并确保该存储库位于apt.sources中,或者发现最坏的下载是最差的,我发现没有一个不能简单找到的包(尽管并不总是很容易)。 .deb或要编译的源。

因此,我的问题较为笼统,尽管我猜它有一个非常简单且因此并不令人兴奋的答案,但我无法考虑如何通过常规搜索引擎方法找到它,因此我转向AskUbuntu:是否可以使用命令或选项用于确定哪个包/哪个包引用丢失的包?

Answers:


13

您可以使用apt-cache搜索该软件包:

apt-cache search x

这将输出所有以某种方式引用x的包。


2
好吧,这听起来很合理……除非它对我不起作用。 apt-get install libtinfo6报告不可用,但被另一个程序包引用,但apt-cache search libtinfo6没有结果。还有其他类似的方法吗?
Erhannis

@Erhannis'terminfo'有什么用吗?我认为有时在错误地重命名软件包时会出现此错误。
Arlo James Barnes

我不确定。我已升级到Debian的下一个版本,该软件包显然不再提供该错误。terminfo不过,下次再试。它曾经发生过,很可能会再次发生。
Erhannis

23

有时会发生这种情况是因为APT根本不了解您在说什么,但是可以通过运行以下命令解决:

sudo apt-get update

运行此命令后,错误通常会消失,因为apt并且apt-get知道如何执行我现在要执行的操作。


4
您可能apt-get update紧随其后是apt-get upgrade -y因为-y绕过了用户确认。与结合使用是没有意义的apt-get update。即便如此,这根本无法回答问题。

4
@CelticWarrior:我原则上同意这个答案,因为如果人们尝试从最近添加的PPA中安装软件包并忘记运行,那么更新软件包存储库信息可以解决此问题apt-get update
David Foerster '02

7
@ user589808我认为这根本不是一个很好的建议。apt-get升级不是必需的,盲目地将-y击中所有内容可能会破坏其无法修复的功能。所以韦恩在hi语法中是正确的。
疯狂的酷

1
apt-get update回答这个问题AB(在回购中存在的包,但apt-get installapt-cache不知道它。)
dcorking

1
对于以后的到来,上面的评论讨论了此答案的较旧版本。当前的答案毫无sudo apt-get update争议,对我来说是正确的解决方案。
达林
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.