如何让`apt-get update`在没有互联网访问和手动分配IP地址的机器上工作?
我已经设置了apt-mirror
并在可以访问互联网的机器上成功下载了最新的ubuntu软件包。 目标是在无法访问Internet的目标计算机上执行apt-get update
时将此计算机用作存储库。 两台机器都设置了手动IP地址,两台机器都运行Ubuntu 16.04作为操作系统。 目标机器中的etc/apt/sources.list
只有一行:
deb http:///ubuntu/ xenial main restricted multiverse universe
但是当我在目标机器上执行sudo apt-get update
时,我收到以下错误:
Ign:1 http:///ubuntu/dists/xenial main InRelease Ign:2 http:///ubuntu/dists/xenial main Release Ign:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Ign:14 http:///ubuntu/dists/xenial main/universe i386 Packages Ign:15 http:///ubuntu/dists/xenial main/universe all Packages Ign:16 http:///ubuntu/dists/xenial main/universe Translation-en_HK Ign:17 http:///ubuntu/dists/xenial main/universe Translation-en Ign:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Ign:14 http:///ubuntu/dists/xenial main/universe i386 Packages Ign:15 http:///ubuntu/dists/xenial main/universe all Packages Ign:16 http:///ubuntu/dists/xenial main/universe Translation-en_HK Ign:17 http:///ubuntu/dists/xenial main/universe Translation-en Ign:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Ign:14 http:///ubuntu/dists/xenial main/universe i386 Packages Ign:15 http:///ubuntu/dists/xenial main/universe all Packages Ign:16 http:///ubuntu/dists/xenial main/universe Translation-en_HK Ign:17 http:///ubuntu/dists/xenial main/universe Translation-en Ign:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Ign:14 http:///ubuntu/dists/xenial main/universe i386 Packages Ign:15 http:///ubuntu/dists/xenial main/universe all Packages Ign:16 http:///ubuntu/dists/xenial main/universe Translation-en_HK Ign:17 http:///ubuntu/dists/xenial main/universe Translation-en Ign:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Ign:14 http:///ubuntu/dists/xenial main/universe i386 Packages Ign:15 http:///ubuntu/dists/xenial main/universe all Packages Ign:16 http:///ubuntu/dists/xenial main/universe Translation-en_HK Ign:17 http:///ubuntu/dists/xenial main/universe Translation-en Err:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages 404 Not Found Ign:4 http:///ubuntu/dists/xenial main/restricted i386 Packages Ign:5 http:///ubuntu/dists/xenial main/restricted all Packages Ign:6 http:///ubuntu/dists/xenial main/restricted Translation-en_HK Ign:7 http:///ubuntu/dists/xenial main/restricted Translation-en Ign:8 http:///ubuntu/dists/xenial main/multiverse amd64 Packages Ign:9 http:///ubuntu/dists/xenial main/multiverse i386 Packages Ign:10 http:///ubuntu/dists/xenial main/multiverse all Packages Ign:11 http:///ubuntu/dists/xenial main/multiverse Translation-en_HK Ign:12 http:///ubuntu/dists/xenial main/multiverse Translation-en Ign:13 http:///ubuntu/dists/xenial main/universe amd64 Packages Reading package lists... Done W: The repository 'http:///ubuntu/dists/xenial main Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details. E: Failed to fetch http:///ubuntu/dists/xenial/dists/main/restricted/binary-amd64/Packages 404 Not Found E: Some index files failed to download. They have been ignored, or old ones used instead.
在目标机器上:
-
/etc/resolve.conf
文件包含以下内容:# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1
-
/etc/network/interfaces
包含以下内容:# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback
此外,由于apt-get update
输出中唯一明确表示错误的行是Err:3 http:///ubuntu/dists/xenial main/restricted amd64 Packages
,我通过执行以下操作检查文件是否存在跟在目标机器中
wget http:///ubuntu/dists/xenial/restricted/binary-amd64/Packages
我看到文件在那里,因为我得到以下输出:
--2017-12-21 17:23:24-- http:///ubuntu/dists/xenial/restricted/binary-amd64/Packages Connecting to :80... connected. HTTP request sent, awaiting response... 200 OK Length: 127112 (124K) Saving to: 'Packages' Packages 100%[============================>] 124.13K --.-KB/s in 0s 2017-12-21 17:23:24 (469 MB/s) - 'Packages' saved [127112/127112]
我还检查了是否可以从目标机器成功ping到repo机器。 这也很有效。
PING () 56(84) bytes of data. 64 bytes from : icmp_seq=1 ttl=64 time=0.169 ms 64 bytes from : icmp_seq=2 ttl=64 time=0.671 ms 64 bytes from : icmp_seq=3 ttl=64 time=0.186 ms 64 bytes from : icmp_seq=4 ttl=64 time=0.190 ms 64 bytes from : icmp_seq=5 ttl=64 time=0.315 ms ^C --- ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4047ms rtt min/avg/max/mdev = 0.169/0.306/0.671/0.190 ms
那么, apt-get update
什么问题? 我该如何解决它并让它发挥作用?
PS我只是注意到错误说http:///ubuntu/dists/xenial/dists/main/restricted/binary-amd64/Packages
。 为什么要在main中寻找restricted
包? 不应该在http:///ubuntu/dists/xenial/restricted/binary-amd64/Packages
? 确实,当我执行wget http:///ubuntu/dists/xenial/dists/main/restricted/binary-amd64/Packages
,它会出现以下错误:
--2017-12-21 17:26:06-- http:///ubuntu/dists/xenial/dists/main/restricted/binary-amd64/Packages Connecting to :80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-12-21 17:26:06 ERROR 404: Not Found.
这里发生了什么? 为什么要尝试检查不存在的目录? 如何让apt-get update
指向正确的路径?
我发现解决方案是编辑etc/apt/sources.list
文件以包含仅系统架构的文件:
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial main restricted multiverse universe
现在当我进行更新时,它没有给出任何错误:
$ sudo apt update Hit:1 http://192.168.12.61/ubuntu xenial InRelease Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date.
只是想把这个发布作为可能遇到同样问题的人的可能解决方案。
我对[amd-64]的看法……如果让我们说,例如,在你的/etc/apt/sources.list中你启用了谷歌浏览器更新deb [arch = amd64] http://dl.google。 com / linux / chrome / deb / stable main
你可以看到这是唯一一个包含[amd-64]的条目,它来自google来源。
在你第一次提到“deb http:// 192 …”时,也许你的更新在获得chrome更新的sources.list提到时停滞不前,因为它没有特别提到。
或者,查看sudo apt-cache policy ,sources.list和sources.list.d
最后,在我进一步回答之前,我可以冒险在我自己的实验室中复制这个。