当我检查更新时,出现“无法下载存储库信息”错误。
这是详细信息下的内容:
W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources Hash Sum mismatch,
E: Some index files failed to download. They have been ignored, or old ones used instead.
Run Code Online (Sandbox Code Playgroud)
小智 512
只需删除/var/lib/apt/lists
目录的所有内容:
sudo rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
然后运行:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
Rob*_*sak 133
这是一个已知问题,对于代理缓存后面的客户端来说,情况会更加严重。一些大型组织和 ISP(尤其是在世界的偏远地区)具有您可能不知道的透明缓存。
根本问题是 apt 存储库格式在更新镜像时会受到竞争条件的影响。此问题特别影响快速更改的存储库,例如开发版本。
您可以在此错误中跟踪修复进度(请在错误中将自己标记为“也影响我”)和此蓝图。但请注意,这是一个复杂的问题,可能需要多个版本才能解决。
Eva*_*van 113
解决此问题的最简单方法是:
sudo apt-get clean
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
Ami*_*val 76
唯一对我有用的解决方案来自unix.stackexchange。
发生这种情况是因为它有一个已知的错误,解决方案是使用不同的压缩方法进行更新,以便文件正确加载并且校验和成功。
试试这个:
sudo rm -rf /var/lib/apt/lists/partial
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz
Run Code Online (Sandbox Code Playgroud)
(感谢@brook_hong 来自 rm 部分的评论)
m13*_*13r 50
删除目录并执行sudo apt-get update
.
只有以下步骤解决了我的问题:
sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是修复它的正确方法......
我在这里找到了解决方案。
Jor*_*tro 25
当您的镜像不是最新的或因超载而导致服务错误时,就会发生这种情况。您可以稍等片刻再试,或者切换到另一个镜像:
Mus*_*ffa 12
如果您使用代理,则创建一个名为99fixbadproxy
in的文件/etc/apt/apt.conf.d/
:
sudo gedit /etc/apt/apt.conf.d/99fixbadproxy
Run Code Online (Sandbox Code Playgroud)
99fixbadproxy
将其粘贴到并保存:
Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy true;
Run Code Online (Sandbox Code Playgroud)
现在运行更新命令:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
该接受的答案,如果您有与CDN的问题很少会工作(内容分发网络,缓存/世界各地镜子含有容易名单和包)。如果 a) 您使用的是PPA或本地镜像,或者 b) 只需要解决一个不匹配问题,它就会起作用。
注意:如果您在上述问题的日志中给出了特定的错误消息,则接受的答案应该始终有效。但是还有其他几个问题已被关闭,作为这个问题的重复,其中接受的答案是不够的。
不过,尝试并没有什么坏处,所以从以下开始:
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
这可能足以继续执行sudo apt-get upgrade
或其他后续命令。
您也可能会从该命令中收到“哈希和不匹配”错误。如果发生这种情况,请运行:
sudo apt-get update --fix-missing
Run Code Online (Sandbox Code Playgroud)
甚至这个命令也有可能抛出“Hash sum mismatch”错误,因为这个问题可能来自暂时的网络内容错误。如果是这样,继续重新运行上面的--fix-missing
命令,直到它成功完成。例如,像:
until sudo apt-get update --fix-missing; do echo trying again; done
Run Code Online (Sandbox Code Playgroud)
(它应该在 的每次运行中取得进展apt-get update --fix-missing
;如果连续运行没有将错误减少到零,请按Ctrl-c中断循环。然后返回到本答案的开头,删除 的内容并重/var/lib/apt/lists
试。)
在此之后,更新可能会起作用,但可以肯定的是,首先运行apt-get clean
,如下所示:
sudo apt-get clean
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
请注意,如果您这样做是为了准备apt-get upgrade
,则有可能(甚至可能,如果您有足够的不匹配需要更新多次)升级将失败并出现“哈希和不匹配”错误。如果是这样,请添加--fix-missing
到您的升级命令中:
sudo apt-get clean
sudo apt-get upgrade --fix-missing
Run Code Online (Sandbox Code Playgroud)
然后再试一次。(apt-get upgrade
with--fix-missing
也会尝试阻止失败的包并继续其他包,所以你应该看到至少运行一次的一些额外进展。)
与前面的until sudo...
命令一样,您可以通过重复此命令(始终在上面的命令之前)获得一些进一步的进展clean
,您甚至可以自动执行
until (sudo apt-get clean; sudo apt-get upgrade --fix-missing --yes); do echo trying again; done
Run Code Online (Sandbox Code Playgroud)
但是,通常情况下,它会在您第一次运行它时升级大多数可升级的软件包--fix-missing
,然后卡在相同的软件包上,没有进一步的进展。此时,您需要使用 返回到开头sudo rm -rf /var/lib/apt/lists/*
并重试。整个过程值得尝试两三次,特别是如果您有几十个或几百个可升级的软件包。
小智 5
以下命令可能会解决您的问题。
sudo rm -R /var/lib/apt/lists/partial/*
Run Code Online (Sandbox Code Playgroud)
进而
sudo apt-get update && sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
它会解决你的问题。我也遇到了同样的问题,但上面的命令为我解决了这个问题。所以给他们一个尝试。
归档时间: |
|
查看次数: |
402264 次 |
最近记录: |