我一直在尝试在 Debian 中安装一些程序,这是我第一次使用 Linux,所以遇到了一些麻烦。当我尝试安装build-essential
时:
sudo apt-get install build-essential
或其他类似的命令,它表示没有“安装候选者”
我在类似这个问题的其他问题中寻找答案,但找不到解决方案。
答案1
以下错误意味着您的计算机上E: Package 'build-essential' has no installation candidate
没有该存储库main
sources.list
该build-essential
软件包可在main
存储库。
首先,你应该编辑你的sources.list
:
sudo apt edit-sources
添加以下行(示例sources.list
为main
和contrib
成分):
deb http://httpredir.debian.org/debian jessie main contrib
deb-src http://httpredir.debian.org/debian jessie main contrib
deb http://httpredir.debian.org/debian jessie-updates main contrib
deb-src http://httpredir.debian.org/debian jessie-updates main contrib
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
保存并运行以下命令来安装build-essential
包:
sudo apt update
sudo apt upgrade
sudo apt install build-essential
答案2
为了让 Apt 了解可用的软件包,它需要有效的配置/etc/apt/sources.list
(通常在安装发行版时正确初始化),并且需要Packages
从配置的网络位置成功下载文件。常见的错误场景包括
- 过时的配置。如果您尝试使用不再受支持的发行版,则曾经正确的 URL 将
/etc/apt/sources.list
不再有效。如果整个服务器消失,症状是“找不到文件”错误或“没有到主机的路由”。 - 防火墙问题阻止 Apt 下载
Packages
文件,具有类似的症状。如果您能够从其他地方连接到 Apt 配置的位置,也许您需要使用代理? - 暂时性服务器错误通常会在几分钟或几小时后自行消失。
- 运行失败
apt-get update
。如果文件的本地副本Packages
太旧,它们将指向服务器上的存档中不再存在的包版本。
不太常见但可以想象的问题原因可能是错误地切换配置文件(从备份恢复?在您的问题中包含足够的信息,以便我们可以告诉您发行版的常见默认值?),物理连接问题(接口已启动,您正在运行)能够连接到例如Googlecurl
或类似的?)和本地磁盘问题(Packages
文件损坏?磁盘安装为只读?)。如果您从 DVD 安装,则 Apt 中也可能仅将 DVD 配置为软件包源。
为了更详细地进行故障排除,任何错误消息或其他症状都有助于识别错误,但了解此级别的系统通常足以自行诊断。
一个小烦恼是,配置 URL 从常规 Apt 输出中无法清晰可见。配置看起来像
deb http://example.net/path distribution section another
Packages
Apt 本身会填充一些部分来构造服务器上一个或多个文件的完整 URL 路径。通过该--print-uris
选项,您可以看到它到底试图获取什么。