如何让`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. 

在目标机器上:

  1. /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 
  2. /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

最后,在我进一步回答之前,我可以冒险在我自己的实验室中复制这个。