“Package <package> 没有安装候选”是什么意思?

the*_*cer 88 apt software-installation

上面的错误是什么意思?什么是安装候选?

我试图做

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

我收到这条消息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package munin-memcached 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 munin-memcached has no installation candidate
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个问题,有人说要做一个,apt-get upgrade但它仍然没有解决我的问题。

Man*_*nha 75

当您尝试安装 APT 不知道的软件包时,就会发生这种情况。添加软件源时,您需要执行以下操作,apt-get update以便使用软件源列表中列出的存储库中的所有软件包更新系统 APT 的数据库。

然后,当您尝试安装任何软件包时,APT 会检查其数据库中的软件包名称,找到它并检查它从何处获取的存储库名称。然后它从该 repo 下载包。

这意味着您的软件源中列出的所有存储库都没有名为munin-memcached. 我再次检查,它在官方 Ubuntu 存储库中不可用。

经过一番谷歌搜索后,我发现它在这个 PPA 中可用:chris-lea/munin-plugins

添加此 PPA 并自行承担安装包的风险。我不认识这个人。

要添加 PPA,请发出以下命令:

sudo add-apt-repository ppa:chris-lea/munin-plugins
Run Code Online (Sandbox Code Playgroud)

要安装 package munin-memcached,请发出以下命令:

sudo apt-get update && sudo apt-get install munin-memcached
Run Code Online (Sandbox Code Playgroud)


Jav*_*era 5

这意味着某些已安装的软件包说它需要一个名为 munin-memcached 的软件包才能工作。但是包管理器在存储库中找不到它。它通常后面跟着一些关于缺少哪些包的信息,但这里没有。

标准 Ubuntu 存储库中没有包名称 munin-memcached,因此您可能使用了一些额外的存储库。如果你把它贴在这里,我们可以尝试找到原因。


kar*_*rel 5

Package <package> has no installation candidate意味着在您的 Ubuntu 发行版软件源中找不到该软件包。

出现此消息的一个可能原因是该软件包是一个旧软件包,已从您的版本的默认存储库中停止使用。例如,qt4-default 已从 Ubuntu 20.04 及更高版本的默认存储库中停止使用。要检查这种可能性,请运行以下命令:

雷麦迪森<包>

此命令将显示哪些 Ubuntu 版本提供此软件包,还将显示哪个存储库提供此软件包。

出现此消息的另一个可能原因是此软件包不适用于您计算机的 CPU 架构。如果您的计算机具有 ARM 处理器,则值得检查。再次运行rmadison <package>即可显示此信息。rmadison <package>还将显示您正在查找的软件包是否仅作为源代码提供,在这种情况下,您必须使用 下载软件包的源代码apt-get source <package>,从使用 checkinstall 等程序下载的源代码构建 .deb 文件,然后安装 .deb 文件文件与sudo apt install ./package.deb

出现此消息的另一个可能原因是,由于软件源中的可用软件列表尚未更新,因此在可用软件列表中找不到此软件包。要更新可用软件列表,请运行以下命令:

rmadison <package>

出现此消息的另一个可能原因是代理配置问题。

aptitude是一个基于终端的包管理器,其命令行模式与 apt-get 类似,只是它更智能。aptitude 可以帮助解决生成 E: Package 'package-name' has no installation candidate错误消息的包冲突。

sudo apt 安装 aptitude
sudo aptitude install package-name # 将 package-name 替换为包的名称

假设您在 Ubuntu 20.04 中收到以下错误消息。

sudo apt update
Run Code Online (Sandbox Code Playgroud)

看来 libssl 可能在 Ubuntu 20.04 默认存储库中可用,但它已被重命名,因为 libssl 已升级到较新的版本。要检查 libssl0.9.8 是否已在 Ubuntu 20.04 中重命名,请运行以下命令:

sudo apt install aptitude
sudo aptitude install package-name # replace package-name with the name of a package

18.04-22.04的结果apt-cache search "^libssl.*"显示libssl0.9.8已经升级到libssl1.1。