Vivid apt-get 更新 /var/lib/apt/lists/partial 中的巨大包文件

use*_*751 8 updates apt

ls -Ssh /var/lib/apt/lists/partial | head

total 88G
 46G security.ubuntu.com_ubuntu_dists_vivid-security_main_binary-amd64_Packages.bz2
 42G us.archive.ubuntu.com_ubuntu_dists_vivid-updates_main_binary-i386_Packages.bz2
Run Code Online (Sandbox Code Playgroud)

我尝试 bunzipping 并得到尾随垃圾:

bunzip2: us.archive.ubuntu.com_ubuntu_dists_vivid-updates_main_binary-i386_Packages.bz2: trailing garbage after EOF ignored
Run Code Online (Sandbox Code Playgroud)

解压出来的文件看起来只有88K:

 du -hs us.archive.ubuntu.com_ubuntu_dists_vivid-updates_main_binary-i386_Packages
88K
Run Code Online (Sandbox Code Playgroud)

对文件末尾进行十六进制转储似乎会显示附加的目录列表:

tail -c 200 security.ubuntu.com_ubuntu_dists_vivid-security_main_binary-amd64_Packages.bz2 | hexdump -C
00000000  30 38 64 66 37 20 20 20  20 20 20 20 20 20 20 20  |08df7           |
00000010  20 20 34 38 31 39 20 75  6e 69 76 65 72 73 65 2f  |  4819 universe/|
00000020  69 31 38 6e 2f 54 72 61  6e 73 6c 61 74 69 6f 6e  |i18n/Translation|
00000030  2d 65 6e 2e 62 7a 32 0a  20 31 30 66 64 62 31 61  |-en.bz2. 10fdb1a|
00000040  37 34 61 62 34 34 33 36  64 39 37 62 33 33 66 65  |74ab4436d97b33fe|
00000050  62 30 38 38 36 66 35 63  38 61 63 63 64 36 34 34  |b0886f5c8accd644|
00000060  33 62 36 34 36 37 61 30  64 63 39 61 63 39 64 31  |3b6467a0dc9ac9d1|
00000070  66 64 33 39 61 36 31 63  62 20 20 20 20 20 20 20  |fd39a61cb       |
00000080  20 20 20 20 20 20 31 35  38 31 20 75 6e 69 76 65  |      1581 unive|
00000090  72 73 65 2f 73 6f 75 72  63 65 2f 53 6f 75 72 63  |rse/source/Sourc|
000000a0  65 73 2e 62 7a 32 0a 20  61 64 66 35 31 32 30 66  |es.bz2. adf5120f|
000000b0  65 63 61 37 38 66 34 65  37 36 66 34 31 36 66 38  |eca78f4e76f416f8|
000000c0  31 30 32 31 36 62 33 30                           |10216b30|
Run Code Online (Sandbox Code Playgroud)

通过字符串管道尾部和文件的 grep 显示一遍又一遍地列出相同的文件:

 tail -c 500K security.ubuntu.com_ubuntu_dists_vivid-security_main_binary-amd64_Packages.bz2 | strings  | grep -i multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2               14 multiverse/i18n/Translation-en.bz2
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058               14 multiverse/i18n/Translation-en.bz2
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个?

Dan*_*der 6

听起来有点像代理问题。我曾经遇到过 maven 的问题,即代理用包含病毒警告的 html 页面替换了 jar。html 被保存为 .jar 但因为它被破坏了,什么都没有了。

无论如何:从目录/var/lib/apt/lists/partial/(以及从/var/cache/apt/archives/partial/)中删除所有内容是安全的。

对于故障排除,我建议执行以下步骤:

  • 尝试另一个镜子,例如。http://de.archive.ubuntu.com/ubuntu/而不是http://ch.archive.ubuntu.com/ubuntu/甚至主存档http://archive.ubuntu.com/ubuntu/
  • 尝试另一种协议:ftp:// 而不是 http:// - 其余路径保留用于默认镜像
  • 尝试使用wireshark 分析传输(使用上下文菜单选项“跟随TCP 流”)。有趣的是 HTTP 标头和内容。如果您得到HTTP 状态代码200(这意味着正常)但人类可读的内容的答案,则您的代理出现严重错误。常规的 bzip2 文件不应包含任何人类可读的文本。
  • 使用wgetcurl来检查在不使用 apt-get 的情况下下载时从服务器获得的内容。

  • 代理支持本身并没有被破坏,但可能有些服务器的行为不正确。您是否曾经使用 Wireshark 来分析下载时传输的内容(选项“跟随 TCP 流”)?有趣的是 HTTP 标头和内容。通常,当通过 `string` 命令进行管道传输时,bzip2 文件不应该包含 _any_ 可用的输出。只是为了确保:您使用的是 http 还是 ftp 服务器? (2认同)