运行 apt-get update 时,'Ign'、'Get' 或 'Hit' 是什么意思?

我在sudo apt-get update的输出中出现了很多错误:重复条目和404未找到错误。
我希望已经解决了这些问题:我移除了没有关联软件包的PPA,然后我删除了/etc/apt/sources.list中的一个重复条目。
看起来我搞砸了。现在大部分行都显示为Ign,当我运行sudo apt-get update时。
我该如何纠正我搞砸的情况?我需要摆平到处都是的这些Ign。大约有50%的Ign(估计)!

6它的意思是: - Rinzwind
2个回答

当你使用apt-get update命令时,它会验证是否需要下载相同的更新索引,如果不需要,则不会再次下载相同的更新索引。
  • Hit表示apt检查了软件包列表的时间戳,发现匹配且没有变化。

  • Ign表示增量索引文件没有变化,因此不会再次下载。

  • Get表示apt检查了软件包列表的时间戳,发现有变化并将进行下载。

不用担心,这只是意味着无需再次下载更新的索引,你已经拥有最新的索引了。


据我所知,软件包列表包含在存储库中的packages.gz/bz2文件中。所以,你的回答是不是意味着:Hit表示检查packages.gz文件的时间戳,并且一切正常。如果时间戳不匹配,则会逐字检查packages.gz文件的内容与我的计算机缓存是否匹配,如果找到所有的软件包,则显示Ign,否则更新存储库缓存。如果我理解有误,请给我更具体的解释。 - heemayl
4这似乎与http://superuser.com/questions/454867/how-do-ign-and-hit-affect-apt-get-update相矛盾,该网页称Ign是一个错误条件。 - pbhj
9我查看了来自“apt”的源文件acqprogress.cc,它也似乎存在矛盾:当Itm.Owner->Status == pkgAcquire::Item::StatDone时,它输出"Ign"。StatDone表示文件已下载(参考acquire-item.h),但是输出"Ign"的代码块实际上是处理下载失败的错误处理代码块...这似乎超出了我作为初学者的编码理解范围。只是提醒一下在superuser.com上的矛盾之处。 - pbhj
15这个答案是不正确的。Ign 表示 apt 尝试下载某些东西(比如翻译或 InRelease 文件),但没有找到,但可以忽略这个问题。继续下一步操作。Hit 表示 apt 需要下载一个 Release 文件(因为某种原因它被删除了),一旦下载完成,它会检查 Package 文件的校验和,并发现新下载的 Release 文件中提到的校验和与已有的 Package 文件的校验和相匹配。这是一个 Hit。所以,它不会再次下载 Package 文件。 - Anwar
只是为了更清楚,这并不意味着这不是一个“问题”?为什么每次我运行 apt-get update 都会出现这个?真让我困惑 :S - Kar19

这个问题的正确答案是:
  • Ign 表示 apt 尝试下载某些东西(例如翻译或 InRelease 文件),但没有找到,但可以忽略,所以继续下一步。因为翻译可能是次要优先级,如果找不到 InRelease 文件,则使用其他身份验证方法,如使用 ReleaseRelease.gpg 对。

  • Hit 表示 apt 需要下载一个 Release 文件或 InRelease 文件(因为某种原因被删除),一旦下载完成,它会检查其中的索引文件的校验和,并发现校验和与已经下载到 /var/lib/apt/lists 中的软件包文件的校验和相匹配。这就是为什么它是一个 Hit。因此,它不会再次下载 Package 文件。


从以下位置找到答案:


提供的“get”信息在其他回答中是正确的吗? - Manuel Jordan