apt-get 需要很长时间来更新\升级

Sho*_*eNN 15 apt

在我的工作网络上,任何 apt-get(或 aptitude)命令都需要很长时间,看起来管理员为此阻止了某些端口(原因不明)。例如

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

大约需要 2 天,我得到的都是 - 很长的回复列表,例如

Get: 36 http://security.ubuntu.com precise-security/universe amd64 Packages [11.6 kB]
Get: 37 http://security.ubuntu.com precise-security/universe amd64 Packages [11.6 kB]
Get: 38 http://security.ubuntu.com precise-security/universe amd64 Packages [11.6 kB]
Get: 39 http://security.ubuntu.com precise-security/universe amd64 Packages [11.6 kB]
Get: 40 http://security.ubuntu.com precise-security/universe amd64 Packages [11.6 kB]
Run Code Online (Sandbox Code Playgroud)

同样的情况然后我尝试下载软件

Get:1 http://archive.ubuntu.com/ubuntu/ precise/main dash i386 0.5.7-2ubuntu2 [85.8 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ precise/main dash i386 0.5.7-2ubuntu2 [85.8 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ precise/main dash i386 0.5.7-2ubuntu2 [85.8 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ precise/main dash i386 0.5.7-2ubuntu2 [85.8 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ precise/main dash i386 0.5.7-2ubuntu2 [85.8 kB]
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来改变 apt-get 或其他东西的端口

Rya*_*yan 13

我的 ubuntu 服务器在apt-get更新和升级方面总是非常快。通常,屏幕上的线条太快而无法看到。然后突然间他们放慢了速度,一夜之间爬行。

它是 IPv6 做的。

我找到了以下解决方案:

sudo nano /etc/gai.conf
Run Code Online (Sandbox Code Playgroud)

取消注释以下行:

precedence ::ffff:0:0/96 100
Run Code Online (Sandbox Code Playgroud)

对我来说,它是第 54 行(确保您没有取消对以 结尾的注释10)。

保存并退出。

sudo nano /etc/apt/apt.conf.d/99force-ipv4 # (this is to make a new file)
Run Code Online (Sandbox Code Playgroud)

将以下行添加到新文件中:

Aquire::ForceIPv4 false;
Run Code Online (Sandbox Code Playgroud)

保存并退出。

  • 我不喜欢这些回答,因为没有实际解释为什么这是一个解决方案。 (3认同)
  • @GrayAdams 如果您有解释,可以添加它。我没有。希望我做到了:(我只是知道什么对我有用,所以我将其发布给其他人来解决问题,至少是暂时的。 (2认同)

小智 5

sudo nano /etc/gai.conf
Run Code Online (Sandbox Code Playgroud)

添加/取消注释这些行:

reload yes
precedence ::ffff:0:0/96 100
precedence ::/0 10
Run Code Online (Sandbox Code Playgroud)

当我用上面的行更新时,/etc/gai.conf它解决了,并且它ipv4直接使用而不是ipv6安装得很快。


irr*_*ohn 1

我建议您首先使用性能检查站点之一测量典型的互联网/网络吞吐量。一种可能是www.speedtest.net。您还可以使用简单的 Google 搜索来查找可用于测试互联网连接速度的其他网站。

如果测试表明问题不是您的互联网连接的限制,那么下一步可能是看看这个问题的答案:
如何才能使用靠近我的镜像,或选择更快的镜像?

我建议您首先尝试该问题最流行的答案。归结为将下面两行添加到 的顶部/etc/apt/sources.list。这应该鼓励更新过程自动选择性能更好的下载镜像。

deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
Run Code Online (Sandbox Code Playgroud)
  • 注意:上面的行适用于Ubuntu 12.04 (Precise Pangolin)。对于早期版本,请将precise上面两行替换为您正在使用的版本的相应代号。

    Lucid(10.04), Maverick(10.10), Natty(11.04), Oneiric(11.10)

如果此方法没有帮助或者根本不是您想要做的事情,那么您也可以考虑让更新管理器尝试选择“最快”的镜像。我在上面提供的链接的问题的其他答案中对此进行了更详细的描述。


小智 0

首先,有两个事实:
apt-get 在标准 Linux 发行版中默认使用 http(端口 80)。

apt-get通常会下载约 20MB 的数据来更新列表。如果您刚刚运行apt-get update并再次运行它,它只会下载约 100KB 的数据。
因此,如果您能够浏览万维网(即使用浏览器的网站)并且您使用的是标准发行版(未定制为使用任何其他端口),则管理员不会阻止任何内容,从而阻止您运行此命令。
问题可能是从您的计算机向 apt-get 用于更新的当前服务器的请求面临一些问题(即可能只是下载问题)。
为了解决你的问题,我的建议(因为你使用的是ubuntu):

打开update-manager-> 单击左下角的设置 -> 单击第一个选项卡 ubuntu 软件 -> 单击“下载自”选项旁边的下拉框 -> 通过在“其他”中选择其他,将服务器更改为离您位置较近的位置列表。另请检查用于更新的协议。一般用户应该是http。-> 现在运行 sudo apt-get update 或使用更新管理器检查更新。现在一切应该对你来说一切顺利。如果按照此操作后仍然无法正常工作,请在此处发表评论。


由于它对您没有帮助,这似乎是在尝试更新前一段时间时收集的过时或部分文件的问题。
我建议您在终端中运行此命令:

sudo mv /var/cache/apt/archives/partial{,bakjune9}
sudo mv /var/lib/apt/lists{,bakjune9}
Run Code Online (Sandbox Code Playgroud)

这些命令将在更新和升级时下载文件时重命名存储文件的目录apt-get。(如果出现问题,您可以将它们重新命名。因此,没有使情况变得比现在更糟的风险)
运行之后:

sudo apt-get update 
Run Code Online (Sandbox Code Playgroud)

它将下载大约 20MB 的数据。
如果运行成功,你的问题就解决了。

现在您应该能够运行sudo apt-get upgrade来安装更新。
如果没有,请在此处评论。