apt-get更新无法获取文件,“临时故障正在解决...”错误


91
Err http://archive.canonical.com natty InRelease    
Err http://security.ubuntu.com oneiric-security InRelease               
Err http://extras.ubuntu.com natty InRelease                            
Err http://security.ubuntu.com oneiric-security Release.gpg
  Temporary failure resolving ‘security.ubuntu.com’
Err http://archive.canonical.com natty Release.gpg
  Temporary failure resolving ‘archive.canonical.com’
Err http://extras.ubuntu.com natty Release.gpg
  Temporary failure resolving ‘extras.ubuntu.com’
Err http://gb.archive.ubuntu.com oneiric InRelease
Err http://gb.archive.ubuntu.com oneiric-updates InRelease
Err http://gb.archive.ubuntu.com natty-backports InRelease
Err http://gb.archive.ubuntu.com oneiric Release.gpg
  Temporary failure resolving ‘gb.archive.ubuntu.com’
Err http://gb.archive.ubuntu.com oneiric-updates Release.gpg
  Temporary failure resolving ‘gb.archive.ubuntu.com’
Err http://gb.archive.ubuntu.com natty-backports Release.gpg
  Temporary failure resolving ‘gb.archive.ubuntu.com’

Reading package lists... Done
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/oneiric/InRelease      
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/oneiric-updates/InRelease  
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/natty-backports/InRelease  
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/oneiric-security/InRelease  
W: Failed to fetch http://archive.canonical.com/ubuntu/dists/natty/InRelease  
W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/natty/InRelease  
W: Failed to fetch http://archive.canonical.com/ubuntu/dists/natty/Release.gpg  Temporary failure resolving ‘archive.canonical.com’
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/oneiric-security/Release.gpg  Temporary failure resolving ‘security.ubuntu.com’
W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/natty/Release.gpg  Temporary failure resolving ‘extras.ubuntu.com’
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/oneiric/Release.gpg  Temporary failure resolving ‘gb.archive.ubuntu.com’
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/oneiric-updates/Release.gpg  Temporary failure resolving ‘gb.archive.ubuntu.com’
W: Failed to fetch http://gb.archive.ubuntu.com/ubuntu/dists/natty-backports/Release.gpg  Temporary failure resolving ‘gb.archive.ubuntu.com’
W: Some index files failed to download. They have been ignored, or old ones used instead.

这是我尝试运行时看到的sudo apt-get update。昨天我对实例进行了更新,现在正在遇到此情况。

Answers:


142

概观

您的问题分为两部分:

  • 修复临时解决消息
  • 解决软件包管理问题

暂时解决

此问题很可能是:

  • 由于您的Internet服务提供商未正确将Internet命名(DNS)转发到其或外部DNS服务器,或者
  • 由于您的网络发生了变化,因此类似地阻止了此命名-例如,新的路由器/调制解调器,使用新配置重新配置交换机。

让我们看一下可能的DNS解决问题。

首先,将已知的DNS服务器临时添加到系统中。

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

然后运行sudo apt-get update

如果这可以解决您的临时解决消息,则请等待24小时,看看您的ISP是否为您解决了该问题(或者只是与您的ISP联系),或者您可以将DNS服务器永久添加到系统中:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null

8.8.8.8 是Google自己的DNS服务器。

资源

您可以使用的另一个示例DNS服务器是OpenDNS-例如:

echo "nameserver 208.67.222.222" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null

包装管理问题

除了临时解决问题外-您还需要解决一些软件包管理问题-我假设您最近尝试从一个Ubuntu版本升级到下一个推荐版本-您的情况是从Natty(11.04)升级到奥尼(11.10)

打开终端并输入

sudo nano /etc/apt/sources.list

在列表中查找与您的预期oneiric发行版本名称不同的行(对于您的情况),您已升级到,但又有另一个发行名称natty

例如,寻找看起来像这样的线 deb http:/archive.canonical.com/ natty backports

#在行的开头添加一个以将其注释掉-例如

#deb http:/archive.canonical.com/ natty backports

保存并重新运行:

sudo apt-get update && sudo apt-get upgrade

您不应再有任何发行版本命名错误。

在写这篇的时候,可能共同发布的名称包括lucidmavericknattyoneiricprecisequantalraringsaucytrustyutopicvivid


完美的作品:)
Maduka Jayalath

当在更新过程中弹出一个名称时,您可能会跳过DNS摆弄,而直接转到源列表。
SPRBRN 2014年

仍可

1
如果这不起作用怎么办?
Matt G

很有可能是docker的DNS问题导致apt-get更新失败。
破旧的

10

您可以从目录/ etc / apt /中找到的文件sources.list中注释未解决的回购

修改sources.list之后,将apt-get存储库清理为

apt-get clean

然后更新

apt-get update

错误将消失


1
这是解决临时DNS问题的永久解决方案。如果您忘记将其改回,该存储库中的软件将不会更新或无法安装。
Chai T. Rex

10

请注意,此答案是针对旧版本的Ubuntu编写的。当前版本使用由D-Bus控制的本地名称服务器,此答案的诊断部分适用于此名称服务器,但不适用于该解决方案。如果/etc/resolv.conf包含nameserver 127.0.1.1或更一般的内容nameserver 127.X.Y.Z,请不要修改它。

“临时故障解决……”表示您的DNS(即从主机名到IP地址的转换)不起作用。您最近是否在计算机上重新配置了某些内容?如果没有,这可能是您的ISP的暂时性错误。

是否ping -n 8.8.8.8显示线条喜欢64 bytes from 8.8.8.8: …?(按Ctrl+ C停止ping。)

  • 如果没有,则您特别遇到IP连接问题。运行traceroute -n 8.8.8.8并查看停止的位置:如果它在您的家庭/办公室中,请检查您的网络设备。如果您可以联系ISP,请向他们投诉。
  • 如果是这样,则说明您特别有DNS问题。检查内容/etc/resolv.conf; 应该有一条线nameserver 1.2.3.4(可能不止一个)。如果存在这些线路,则您的ISP中可能存在暂时性问题,您可以通过将其添加nameserver 8.8.8.8到该文件中来解决该问题(这声明了额外的DNS服务器,由Google免费提供)。如果后面的第一个数字nameserver是127,则您的计算机上有一个DNS中继(这是一件好事),您必须配置该DNS中继而不是进行修改/etc/resolv.conf。在现代版本的Ubuntu中,默认情况下有一个DNS中继,即Dnsmasq,并且由D-Bus控制。

1
注意:ping 8.8.8.8 -c3只能ping 3一次,然后不需要Ctrl + C。您可以在参数使用任何数字,比如-c5-c1-c100
阿尔达

nameserver必须与主机名的机器一起放置?
艾伯特

@albert /etc/resolv.conf重要的是您所使用的计算机上的那个。但是在现代系统上,它仅指向本地计算机,如果您遇到DNS问题,则必须使用D-Bus和NetworkManager。
Gilles

3

有时,当您位于代理服务器之后时,甚至有必要在其中生成apt.conf文件,/etc/apt/并用特定条目填充该文件,例如:

Acquire::http::proxy "http://<yourproxyserver>:<Port>";
Acquire::https::proxy "http://<yourproxyserver>:<Port>";
Acquire::ftp::proxy "http://<yourproxyserver>:<Port>";

如果需要验证,则配置文件如下所示:

Acquire::http::proxy "http://<domain\user>:<password>@<yourproxyserver>:<Port>";
Acquire::https::proxy "http://<domain\user>:<password>@<yourproxyserver>:<Port>";
Acquire::ftp::proxy "http://<domain\user>:<password>@<yourproxyserver>:<Port>";

1

此问题也可能是由于接口名称错误引起的。例如,Temporary failure resolving错误消息可能是由未命名eth0但命名错误的接口引起的eml


由于lightdm遇到问题,我无法登录我的帐户,我需要更新lightdm,您能否扩大对解决问题的答案?谢谢。
Shayan


0

运行apt-get命令时遇到类似的错误。原来我在控制台上打开了“软件更新面板”。
这似乎阻止了命令行apt-get,但是我不确定。


0

这是一个DNS问题。检查您的/etc/resolv.conf文件。

例如,在我遇到此问题并检查此文件的情况下,该文件为空!但它应该包含您的dns-nameserver

矿:

nameserver 192.168.10.x

192.168.10.x is my gateway ip address


3
欢迎来到AskUbuntu!如果您想帮助,请给出更详细的答案。我的意思是,介绍大多数可能的场景和方法,或发布指向相应教程的链接。
Danatela

1
您能说明要检查/etc/resolv.conf什么吗?
papukaija

0

我有这个错误。在获得Linode支持的提示后,我注释掉了/ etc / hosts中的所有IPv6行,然后apt-get update开始工作。


0

对于使用EC2的用户,请记住检查您的安全组设置是否允许到您要更新的网站的出站连接。您可以设置“所有流量出站”设置,然后查看是否可行。


0

接受的解决方案对我不起作用。首先,仅apt-get update警告我有关的信息Temporary failure resolving 'foo.com',但是当我尝试使用nslookup foo.com或时ping foo.com,它可以正常工作!

对于解决此错误,我难以置信的污点/修复是/etc/hosts使用此简短脚本手动将已解析的域添加到其中:

resolveAptHosts()
{
    mapfile -t hosts < <(
        sed -n -r '/^#/d; s;deb(-src)? (http://|ftp://)?([^/ ]+).*;\3;p'\
        /etc/apt/sources.list | sort | uniq )
    # delete all hosts from /etc/hosts, e.g., from an earlier call
    sudo sed -i -r '/^[0-9]{1,3}(\.[0-9]{1,3}){3}[ \t]+('"$( printf '|%s'\
        "${hosts[@]//./\\.}" | sed 's/^|//' )"')[ \t]*$/d' /etc/hosts
    for host in ${hosts[@]}; do
        ip=$( nslookup "$host" | sed -n -r 's|Address:[ \t]*([0-9.]+).*|\1|p' |
              tail -1 )
        sudo bash -c "echo $ip $host >> /etc/hosts"
    done
}

现在更新应该可以工作了:

resolveAptHosts && sudo apt-get update

如果有人知道这种解决方法为何有效,以及如何真正解决此错误,我将永远感激不已。我也尝试使用sudo apt-get update -o Acquire::ForceIPv4=true来排除IPv6解决问题,但这也无济于事。


0

我在vmware虚拟机中遇到了同样的问题,主机和客户机都是ubuntu。我解决了更改虚拟机设置的问题。我没有使用NAT,而是设置了Bridged。对我有用


0

错误消息应该表明您没有Internet连接。如果在最初的ubuntu安装过程中选择不执行更新(未连接到wifi /以太网),而在安装完成并重新启动后,您可能会看到无数的ubuntu登录动画屏幕(观看那些动点),这些错误消息也会出现。 ..如果您现在启动到Recovery并出现根提示问题,apt-get update即使您从Recovery启用网络,如果您在初次安装时避免了wifi,也无法连接到wifi,则您将看到上述错误消息。

解决此特殊情况的方法:插入以太网电缆,然后启动到Recovery并发布,apt-get update或者从头开始重新安装,并确保启用更新

核心问题-如果您在安装过程中未连接到wifi,因此避免了程序包更新,则在恢复启动过程中将不会出现wifi登录提示-应该会得到解决...同样,上面的错误消息应该只是表明您没有互联网连接

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.