![无法通过家庭网络更新](https://linux22.com/image/911323/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%E5%AE%B6%E5%BA%AD%E7%BD%91%E7%BB%9C%E6%9B%B4%E6%96%B0.png)
一个月前,我发过一篇文章这个话题关于我的笔记本电脑在家庭网络上更新时似乎冻结的问题。在提示输入密码后,我的终端上什么都没有显示。但在任何其他网络上,计算机都可以完美更新。由于没有时间深入研究这个问题,我得出结论,这是一个驱动程序问题,我可以使用 19.04 修复它,所以我等待了一段时间。
我现在有更多的时间来调查,并且由于切换到 19.04(使用我手机的热点)并没有改变任何东西,所以我会回复您。
我注意到的第一件事是笔记本电脑实际上并没有冻结并且正在更新......只是速度非常慢。
给你一个概念,这是在等待大约 15 分钟后。每行都需要一段时间才能最终出现,最后一行又出现了 10 分钟。在这 10 分钟之后,它通过忽略接下来的阶段自行解脱get
:
这不是网络速度问题,这是更新运行时速度测试的结果:
最后,这不是我的机器阻塞了 ubuntu 服务器端口,因为我的桌面也运行 19.04 并具有类似的设置(特别是就使用更新服务器等而言)在同一网络上更新正常。
有什么想法吗?如果有帮助的话,有线和 wifi 连接的问题是一样的
编辑:更新 50 分钟后的情况报告进展缓慢,请注意极低的下载速度
编辑 2:经过研究,sources.list 是干净的,服务器不是问题。以下是结果sudo strace apt update
:
munmap(0x7fd0b81fc000, 2783) = 0
close(5) = 0
geteuid() = 0
getegid() = 0
openat(AT_FDCWD, "/proc/sys/kernel/ngroups_max", O_RDONLY) = 5
read(5, "65536\n", 31) = 6
close(5) = 0
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd0b72d2000
getgroups(65536, [0]) = 1
setgroups(1, [65534]) = 0
setresgid(-1, 65534, -1) = 0
setresuid(-1, 106, -1) = 0
getpid() = 5250
openat(AT_FDCWD, "/var/lib/apt/lists/partial/.apt-acquire-privs-test.9zhf7x", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
unlink("/var/lib/apt/lists/partial/.apt-acquire-privs-test.9zhf7x") = 0
close(5) = 0
getpid() = 5250
openat(AT_FDCWD, "/var/lib/apt/lists/partial/.apt-acquire-privs-test.O5IFAd", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
unlink("/var/lib/apt/lists/partial/.apt-acquire-privs-test.O5IFAd") = 0
close(5) = 0
getpid() = 5250
openat(AT_FDCWD, "/var/lib/apt/lists/partial/.apt-acquire-privs-test.1Rjq4S", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
unlink("/var/lib/apt/lists/partial/.apt-acquire-privs-test.1Rjq4S") = 0
close(5) = 0
getpid() = 5250
openat(AT_FDCWD, "/var/lib/apt/lists/partial/.apt-acquire-privs-test.Vl5byy", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
unlink("/var/lib/apt/lists/partial/.apt-acquire-privs-test.Vl5byy") = 0
close(5) = 0
getpid() = 5250
openat(AT_FDCWD, "/var/lib/apt/lists/partial/.apt-acquire-privs-test.lV2Y1d", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
unlink("/var/lib/apt/lists/partial/.apt-acquire-privs-test.lV2Y1d") = 0
close(5) = 0
setresuid(-1, 0, -1) = 0
setresgid(-1, 0, -1) = 0
setgroups(1, [0]) = 0
munmap(0x7fd0b72d2000, 266240) = 0
stat("/usr/lib/apt/methods/http", {st_mode=S_IFREG|0755, st_size=174248, ...}) = 0
pipe([5, 6]) = 0
pipe([7, 8]) = 0
fcntl(5, F_SETFD, FD_CLOEXEC) = 0
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd0b78e5a50) = 5253
fcntl(5, F_GETFL) = 0 (flags O_RDONLY)
fcntl(5, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl(8, F_GETFL) = 0x1 (flags O_WRONLY)
fcntl(8, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
close(6) = 0
close(7) = 0
select(6, [5], NULL, NULL, NULL) = 1 (in [5])
read(5, "100 Capabilities\nSend-Config: tr"..., 64000) = 64
faccessat(AT_FDCWD, "/usr/bin/auto-apt-proxy", R_OK|X_OK) = 0
pipe([6, 7]) = 0
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7fd0b78e5a50) = 5254
close(7) = 0
stat("/usr/bin/xz", {st_mode=S_IFREG|0755, st_size=80224, ...}) = 0
stat("/usr/bin/zstd", 0x7fffb91cf5f0) = -1 ENOENT (No such file or directory)
stat("/usr/bin/lz4", 0x7fffb91cf5f0) = -1 ENOENT (No such file or directory)
stat("/bin/gzip", {st_mode=S_IFREG|0755, st_size=97336, ...}) = 0
stat("/usr/bin/xz", {st_mode=S_IFREG|0755, st_size=80224, ...}) = 0
stat("/bin/bzip2", {st_mode=S_IFREG|0755, st_size=38984, ...}) = 0
stat("/usr/bin/xz", {st_mode=S_IFREG|0755, st_size=80224, ...}) = 0
read(6, "", 4096) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5254, si_uid=106, si_status=0, si_utime=0, si_stime=0} ---
close(6) = 0
wait4(5254, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5254
stat("/var/lib/apt/lists/archive.canonical.com_ubuntu_dists_disco_InRelease", 0x7fffb91cfc60) = -1 ENOENT (No such file or directory)
stat("/var/lib/apt/lists/partial/archive.canonical.com_ubuntu_dists_disco_InRelease", 0x7fffb91cfd30) = -1 ENOENT (No such file or directory)
stat("/usr/lib/apt/methods/http", {st_mode=S_IFREG|0755, st_size=174248, ...}) = 0
pipe([6, 7]) = 0
pipe([9, 10]) = 0
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
fcntl(9, F_SETFD, FD_CLOEXEC) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7fd0b78e5a50) = 6110
fcntl(6, F_GETFL) = 0 (flags O_RDONLY)
fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl(10, F_GETFL) = 0x1 (flags O_WRONLY)
fcntl(10, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
close(7) = 0
close(9) = 0
select(7, [6], NULL, NULL, NULL) = 1 (in [6])
read(6, "100 Capabilities\nSend-Config: tr"..., 64000) = 64
faccessat(AT_FDCWD, "/usr/bin/auto-apt-proxy", R_OK|X_OK) = 0
pipe([7, 9]) = 0
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd0b78e5a50) = 6111
close(9) = 0
read(7, "", 4096) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=6111, si_uid=106, si_status=0, si_utime=0, si_stime=0} ---
close(7) = 0
wait4(6111, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 6111
stat("/var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco- updates_InRelease", 0x7fffb91cfc60) = -1 ENOENT (No such file or directory)
stat("/var/lib/apt/lists/partial/fr.archive.ubuntu.com_ubuntu_dists_disco-updates_InRelease", 0x7fffb91cfd30) = -1 ENOENT (No such file or directory)
faccessat(AT_FDCWD, "/usr/bin/auto-apt-proxy", R_OK|X_OK) = 0
pipe([7, 9]) = 0
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7fd0b78e5a50) = 6896
close(9) = 0
read(7, ^C0x55feeddd9900, 4096) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
输出如下ifconfig | grep errors
:
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答案1
调查问题的步骤
这可能不一定是网络问题。
尝试禁用您之前使用过的任何自定义存储库 - 如果您有任何自定义存储库的话/etc/apt/sources.list.d
。其中一个可能会导致问题。
如果您没有任何自定义存储库,您可以尝试使用:
sudo apt-get clean
或者备份/var/lib/apt/lists
并再次更新缓存,如下所示:
sudo mkdir /var/lib/apt/lists.bak sudo mv /var/lib/apt/lists/* /var/lib/apt/lists.bak sudo apt-get 更新
如果问题仍然存在,请尝试使用Applications menu
-> Updates
->切换到其他 ubuntu 镜像Settings
,然后转到第一个带有 ubuntu 软件的选项卡。将您的下载服务器更改为您居住的国家/地区或任何其他国家/地区。
OP案例解决方案
通过 strace 检查 apt-get 后发现auto-apt-proxy
OP 的 PC 上安装了软件包。任何类型的代理都可能导致 OP 问题中所述的问题。
解决方案基本上是清除(卸载)该包并重新启动电脑。
sudo apt-get purge 自动 apt 代理
答案2
我们与 Comar 就他的回答进行了长时间的讨论,最终找到了解决方案,因此我将在这里总结一下。
使用显示了对某个他不熟悉的sudo strace apt update
调用的多次引用。我将其删除,并仔细检查了是否有任何代理使用,该代理在调用 后没有返回任何内容。然后我重新启动以防万一,并运行了一个完美执行的常规程序。auto-apt-proxy
sudo apt purge auto-apt-proxy
apt
sudo grep -i -rs proxy /etc/apt/
apt purge
sudo apt update
所以我不知道这个代理是什么(我不记得曾经要求我的机器安装这样的包)以及为什么它只在某些网络上阻碍更新过程,但删除它就可以解决所有问题。
希望这能对将来的某人有所帮助。