APT Hash sum mismatch错误的常见解决方法总结

2023-05-16

APT Hash sum mismatch错误的常见解决方法总结

LINUX报这个错误的时候,有很多的原因,通常是出现在使用apt-get update的时候, apt 的全称是Advanced Packaging Tool。在apt版本1.2.0之前,它是有BUG的,后续版本修正了,或许可以通过直接升级apt版本解决。问题原因五花八门,中外网友们的解决办法也是多种多样。

Hash sum mismatch这个错误是什么意思?

  apt repository metadata is organized in such a way that a top level file contains the checksums of other pieces of repository metadata.
 The “Hash sum mismatch” error indicates to the user that apt has run a checksum against the repository metadata it has downloaded and the checksum apt computed does not match the checksum listed in the top level file.
Unfortunately, due to a bug in apt, metadata files compressed with lzma (.xz files) are occasionally downloaded (and in some cases) decompressed incorrectly resulting in a broken file.     As a result, the checksum of the broken file will be incorrect and cause apt to produce the “Hash sum mismatch” error.

这里写图片描述

Hash sum mismatch 为何产生?

There are at least 3 ways this can happen for most Ubuntu and Debian based systems today:

Stale metadata cached between the client and server. This is unlikely in most cases and not possible if SSL is used.
The metadata does not match because of a bug during the extraction of the metadata.
The repository is being updated while an apt-get update is run, or apt has cached a stale Release file.

Users can avoid all 3 cases by: (如何避免?)

Using SSL.
Disabling XZ compressed metadata, or ensuring a newer version of APT is used.
Using the new Acquire-by-hash feature available in APT 1.2.0.

这里写图片描述

截图取自下文参考链接
参考链接4: Solution reference4
参考链接5: Solution reference5

怎么解决?总结能够google到的常见解决方法

本人在遇到这个错误的时候,查到了很多方法,这些方法的都是有网友验证过的,具体哪种方法适用于读者的问题的解决,可以多尝试。下面,我就按照方法被应用频率的高低来阐述。

(1)清cache缓存:

$ sudo apt-get clean  
$ sudo apt-get update --fix-missing 

参考链接1:Solution reference1

(2)删除/var/lib/apt/lists/partial/中的下载文件:

$ sudo rm -R /var/lib/apt/lists/partial/*
$ sudo apt-get update && sudo apt-get upgrade

参考链接2:Solution reference2

(3)更换apt更新源:

有时候,因为处于GFW内、网速下载更新等原因,我们是使用UBUNTU的时候,改为国内的更新源更加方便 。校园网的话,使用edu.cn的源,比如中科大,其他的话可以使用网易、阿里等。
替换前做个副本备份先:

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

编辑源列表,加入国内源地址:

$ sudo gedit /etc/apt/sources.list
# 网易新开的更新源

deb http://mirrors.163.com/ubuntu/ intrepid main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ intrepid main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ intrepid-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ intrepid-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ intrepid-backports main restricted universe multiverse

# 或者, 加入如下内容(中科大的):
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates main restricted
 deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates main restricted
deb http://mirrors.ustc.edu.cn/ubuntu/ precise universe
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise universe
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates universe
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates universe
deb http://mirrors.ustc.edu.cn/ubuntu/ precise multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse

再更新列表:

$ sudo apt-get update
$ sudo apt-get upgrade

(4)指定apt下载文件的压缩格式或者设置Acquire-by-hash的值:

指定apt下载文件的压缩格式

$ sudo rm -rf /var/lib/apt/lists/partial
$ sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

对于第二条命令:也可以设置下载文件的压缩格式为bz2
如果不想每次的对apt的配置进行第二条命令那样设置的话,可以这么做。

1, 创建一个新文件, 
/etc/apt/apt.conf.d/99compression-workaround
2,添加文本
 Acquire::CompressionTypes::Order:: "gz";

现在,apt-get update 将会优先使用gzip 格式压缩的元数据。

这么设置的目的是因为apt本身的bug(bug报告),真正的解决办法还是利用apt的新特性进行设置Acquire-by-hash的值为‘Yes’,参考里面没有讲到如何enable或者take advantage of 这个Acquire-by-hash的feature, 如果有读者朋友找到在哪儿设置,麻烦留言~

详情参考
参考链接4: Solution reference4
参考链接5: Solution reference5
或者直接试着升级一下apt,如果apt的版本比较低的话。

(5)对代理服务器进行设置:

还有些开发者遇到的问题,是因为公司的Proxy的设置。
如果读者朋友使用了Proxy,那么可以尝试,在/etc/apt/apt.conf.d/ 目录下创建一个名称为99fixbadproxy 的文件

$ sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

把以下文本复制到上述文件中,然后保存退出:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

运行更新命令

$ sudo apt-get update

参考链接6:Solution reference6

(6)检查下载源的服务器与你所处地区的时差,修正时间戳timestamp:

国外网站上的一个回答如下:

To figure out whether this issue is fixed, you can visit, for example, the page at https://apt.dockerproject.org/repo/dists/ubuntu-xenial/main/binary-amd64/ and check the timestamp for the InRelease file.

Currently it still says 11:06 (UTC) which is the version of the file that has the wrong checksums. If it says a later time, then it has probably been fixed.

Now the time is 13:25 (UTC) and we are still waiting

参考链接7:Solution reference7

N.B. 如果读者朋友是在docker中使用dockerfile进行build新镜像出错了的话,可以参考我的下一篇。

官网的那个docker-whale镜像build代码,我运行是有错误的,报的错误也是这个Hash sum mismatch。但是与我们上述的方法还是有些区别,毕竟上面的情况,都是网友在物理主机下运行apt-get update 得到的error,我们使用dockerfile进行build新镜像的时候,实际上是在容器里面,有一点不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APT Hash sum mismatch错误的常见解决方法总结 的相关文章

  • 如何解码哈希

    如果攻击者可以访问用户的数据库并且密码存储在哈希值中 攻击者可以解码该哈希值吗 您能推荐任何可以解码哈希值的工具吗 您可以在这里找到更多详细信息 http crackstation net hashing security htm http
  • 使用 GROUP BY 时 MySQL SUM 不起作用

    假设我们有这张表 Symbol Size A 12 B 5 A 3 A 6 B 8 我们想要这样的视图 Symbol Size A 21 B 13 所以我们用这个 Select Symbol sum Size from table grou
  • 在matlab中对矩阵元素求和的有效(最快)方法

    让我们有矩阵A say A magic 100 我见过两种计算矩阵所有元素之和的方法A sumOfA sum sum A Or sumOfA sum A 其中一个比其他更快 或更好的练习 吗 如果有的话是哪一个 或者它们都同样快 看来你无法
  • 获取文件哈希性能/优化

    我正在尝试尽快获取文件的哈希值 我有一个程序 可以对大量数据 100GB 进行哈希处理 这些数据由随机文件大小 每个文件从几KB到5GB 组成 跨少量文件到数十万个文件 该程序必须支持所有 Java 支持的算法 MD2 MD5 SHA 1
  • 无法使用数组作为 Ruby Hash 的默认值? [复制]

    这个问题在这里已经有答案了 我正在向哈希键添加项目 我期望得到这样的结构 a 1 b 2 3 4 我使用数组来初始化哈希 irb gt hash Hash new gt 然后开始使用它 irb gt hash a lt lt 1 gt 1
  • 哈希链接重新加载页面

    我有一个安装在第三方网站上的代码片段 我无法了解详细信息 但它通过使用 a 将 HTML CSS 和 JS 加载到页面上
  • 散列到分组数组中

    我对 ruby 的经验不是很丰富 所以我正在努力格式化一段数据 我有这个哈希 其中包含一些具有相同值的键 例如 key gt value1 key2 gt value2 key3 gt value3 key4 gt value1 key5
  • Oracle SQL 上的条件 SUM

    我通过以下方式获得数据 ITEM LOCATION UNIT RETAIL QUANTITY 100 KS 10 10 200 KS 20 30 我想要正数量的总和 数量 gt 0 和负数量的总和 数量 如何根据条件获得这些列的总和 您可以
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • java中带有二维键的映射

    我想要一个在 Java 中由两个键索引的映射 在其中使用两个键放置和检索值的映射 需要明确的是 我正在寻找以下行为 map put key1 key2 value map get key1 key2 returns value map ge
  • Python 单行代码

    我想要用 Python 编写以下代码的单行解决方案 但是如何实现呢 total 0 for ob in self oblist total sum v amount for v in ob anoutherob 它返回总价值 我想要它是单行
  • 如何使用 Node JS 对包含小数/尾随零的数据生成哈希

    在尝试验证 Node JS 中的 Authorize net webhook 通知时 我遇到了以下与小数 尾随零有关的问题 Authorize net 使用 HMAC SHA512 以及 Webhook 通知正文和商家的签名密钥形成哈希 该
  • python 求数组中正数之和的函数

    我需要编写一个函数 它接受一个数字数组并找到所有数字的最大和 换句话说 我需要找到正数的总和 我写了这个 我收到 列表超出范围 想法 def maximum sub A x 0 i 0 for i in A while A i gt 0 x
  • Docker 错误:无法找到包 git

    我正在使用图像nginx这是基于dockerfile ubuntu 连接到 docker 容器的 shell docker exec it
  • Oh-my-zsh 哈希(井号)符号错误模式或未找到匹配项

    我很确定是与我的 Oh my zsh 配置相关的东西 但我不知道它是什么 当我在 git 命令中使用 符号时 但也适用于其他所有命令 例如 ls 2 我收到 错误模式 错误或 找不到匹配项 我猜是要计算一些东西 但我找不到在哪里配置它 I
  • 添加零时奇怪的 numpy.sum 行为

    我了解数学上等效的算术运算如何因数值错误而导致不同的结果 例如 以不同的顺序对浮点数求和 然而 令我惊讶的是添加零sum可以改变结果 我认为无论如何 这始终适用于浮动 x 0 x 这是一个例子 我预计所有的线都恰好为零 有人可以解释为什么会
  • 在不使用 PHP 的情况下将 MYSQL 中的表字段更新为其值加上常量

    我想表演一个UPDATE in MYSQL其中我获取一个字段值 添加一个常量并将新值保存在同一字段中 假设我们有一个名为OldValue在一个名为aTable 伪代码可能是 UPDATE aTable SET OldValue OldVal
  • 有没有办法在Python中使用非openssl md5作为hashlib?

    我生成 md5 内容哈希值用于上传验证 但最近我注意到 对于在启用 FIPS 的计算机上运行的任何用户来说 这都会失败 FIPS 禁用 openssl md5 导致ValueError当我尝试初始化 hashlib 时 通常我会使用 SHA
  • MySQL按总和连接表问题

    我在连接表时遇到问题 以下是示例表 表A 30行 ID Name Description 1 Type Unicode Art 2 Header Spreadsheet 3 Auto Align Off 表B 100行 ID Name De
  • 当达到最小起订量时,如何重置 Google 表格中的运行总计?

    请提供数组公式 当达到最小起订量时 您可以帮助重置运行总计吗 这里最小起订量 15 当运行总计等于或大于 15 时 应重新启动 Date Value Desired 12 2022 6 6 01 2023 5 11 02 2023 4 15

随机推荐

  • 无人机高度估计_卡尔曼滤波

    一 卡尔曼滤波公式 线性系统的离散状态空间表达式 xff1a 这是卡尔曼五个标准公式的基础 式叫做系统状态方程 xff1a xk k时刻系统状态变量值 Ak 状态转移矩阵 Bk 控制矩阵 uk 1 k 1时刻系统的输入 wk 1 k 1时刻
  • 日常记录4_pixhawk电流计的使用

    1 实物图以及连接 注意事项 接电流计的时候 xff0c 先别给电流计通电 xff0c 要先接负载 xff08 即接到飞机那一端 xff09 再给电流计供电 xff0c 不然空载的时候 xff0c 电池给电流计的电流会很大 xff0c 导致
  • Android中的ListView

    文章目录 1 ListView概述2 适配器2 1 ArrayAdapter2 2 SimpleAdapter2 3 BaseAdapter 1 ListView概述 下面看一下ListView的应用场景 xff1a 2 适配器 先看下适配
  • Android中的ViewPager2

    文章目录 1 ViewPager2简介1 1 ViewPager2应用场合1 2 ViewPager2应用背景 2 应用案例2 1 图片轮播2 2 导航 1 ViewPager2简介 1 1 ViewPager2应用场合 ViewPager
  • Qt界面语言国际化

    文章目录 1 Qt界面语言国际化1 1 操作步骤 1 Qt界面语言国际化 1 1 操作步骤 操作步骤如下 xff1a 生成TS文件 xff08 LUPDATE xff09 编辑TS文件 xff08 LINGUIST xff09 发布TS文件
  • Qt工程pro文件配置详解

    文章目录 1 pro文件常用配置1 1 注释1 2 CONFIG1 3 DEFINES1 4 FORMS1 5 HEADERS1 6 INCLUDEPATH1 7 LIBS1 8 QT1 9 SOURCES1 10 TRANSLATIONS
  • Qt配置GUI程序控制台输出

    文章目录 1 Qt配置GUI程序控制台输出 1 Qt配置GUI程序控制台输出 下面看一下如何控制GUI程序控制台输出 xff1a 在 在 pro 文件中添加 xff1a CONFIG 43 61 console 选择 xff1a 项目 gt
  • 列表框QListWidget 类

    文章目录 1 QListWidget 简介2 QListWidget 常用操作2 1 添加操作2 2 删除操作 1 QListWidget 简介 Qt 提供 QListWidget 类列表框控件用来加载并显示多个列表项 QListWidge
  • Qt中的QSpinBox

    文章目录 1 QSpinBox1 1 QSpinBox 简介1 2 QSpinBox的主要属性 1 QSpinBox 1 1 QSpinBox 简介 QSpinBox 类提供了一个微调框部件 QSpinBox 允许用户选择一个值 xff0c
  • C/C++面试题1

    目录 1 C 面向对象的三大特性是什么 谈谈你对这三大特性的认识 2 include 和 include filename
  • QCheckBox

    文章目录 1 QCheckBox1 1 QCheckBox简介 1 QCheckBox 1 1 QCheckBox简介 QCheckBox 继承自 QAbstractButton xff0c 它提供了一个带文本标签的复选框 QCheckBo
  • QSlider

    文章目录 1 QSlider1 1 QSlider 简介 1 QSlider 1 1 QSlider 简介 QSlider 部件提供了一个垂直或水平滑动条 滑块是一个用于控制有界值的典型部件 它允许用户沿水平或垂直方向移动滑块 xff0c
  • QComboBox

    文章目录 1 QComboBox1 1 QComBox简介 1 QComboBox 1 1 QComBox简介 QComboBox 是下拉列表框组件类 xff0c 它提供一个下拉列表供用户选择 xff0c 也可以直接当作一个 QLineEd
  • QTreeWidget

    文章目录 1 QTreeWidget1 1 QTreeWidget简介 1 QTreeWidget 1 1 QTreeWidget简介 在 Qt 中的树形控件称为 QTreeWidget xff0c 而控件里的树形节点称为 QTreeWid
  • QMouseEvent

    文章目录 1 QMouseEvent1 1 特别说明 2 通过QMouseEvent事件实现窗口移动 1 QMouseEvent 1 1 特别说明 QMouseEvent没啥要注意的 xff0c 就是对于mouseMoveEvent xff
  • 1.基础概念【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 ARM 我们经常听所ARM xff0c 其实ARM有两种含义 xff1a ARM是一家公司 xff0c ARM也是一种处理器架构 RISC是精简指令集 xff0c 旨在
  • 2.单片机开发模式【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 单片机上手思路 对于一款新单片机 xff0c 我们可以采取如下思路进行上手 xff1a 去芯片原厂官网 xff0c 下载资料 xff0c 主要是获取数据手册和参考手册
  • 3.时钟与GPIO【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 时钟系统 首先我们要知道时钟的主要作用是用来同步 xff0c 现代的计算机系统是必然有时钟的 并且 xff0c 对于高级的单片机系统 xff0c 还会存在着不同频率的时
  • 4.中断与串口【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 中断 我们先来看一下什么是中断 xff1a 其实这种就是前后台的程序设计模式 我们来看下CM3内核都有哪些中断 xff0c 如下表 xff1a 对于CM3内核的单片来说
  • APT Hash sum mismatch错误的常见解决方法总结

    APT Hash sum mismatch错误的常见解决方法总结 LINUX报这个错误的时候 xff0c 有很多的原因 xff0c 通常是出现在使用apt get update的时候 xff0c apt 的全称是Advanced Packa