IT技术博客大学习 共学习 共进步

Ubuntu 下Hash校验和不符问题的解决

LinuxByte 2014-04-07 22:45:49 浏览 5,461 次

   在Ubuntu 下有一个问题经常会困扰大家,就是运行 apt-get update 是出现 Hash校验和不符的提示。

W: 无法下载 bzip2:/var/lib/apt/lists/partial/mirrors.163.com_ubuntu_dists_saucy-security_universe_binary-i386_Packages  Hash 校验和不符
W: 无法下载 bzip2:/var/lib/apt/lists/partial/mirrors.163.com_ubuntu_dists_saucy-security_multiverse_binary-i386_Packages  Hash 校验和不符
W: 无法下载 bzip2:/var/lib/apt/lists/partial/repo.mate-desktop.org_ubuntu_dists_saucy_main_binary-amd64_Packages  Hash 校验和不符
W: 无法下载 bzip2:/var/lib/apt/lists/partial/repo.mate-desktop.org_ubuntu_dists_saucy_main_binary-i386_Packages  Hash 校验和不符
E: Some index files failed to download. They have been ignored, or old ones used instead.

   网上搜索了一圈各种解决方法都有,不过最后判断还是网络原因,既然确定是网络造成的就有相应的解决办法。

   方法1 为APT 配置http sever。

   因为我在VPS 开了SSH SERVER,所以开SSH TUNNEL 很方便,但很可惜apt-get 只支持http 代理,所以还需要装个privoxy 把ssh tunnel 的scoks5 代理转成http 代理。

   ssh tunnel 的开启管理这里不多说,有问题可查看之前的文章:gSTM-图形ssh Tunnel管理器

   这里说一下privoxy 的安装和配置:

   a.安装

sudo apt-fast install privoxy

   b.配置

   编辑/etc/privoxy/config,让privoxy开启socks转http。在config中找到下面粗体的一行,把注释的#去掉,将端口号改为之前gSTM中设定的即可。

   listen-address localhost:8118

   #forward-socks5 / 127.0.0.1:7070

   保存启动 privoxy。

sudo /etc/init.d/privoxy start

   最后通过http 代理更新apt

sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8118/" update

   方法2. 用apt-fast 代替 apt-get 这是意外发现的,发现用了apt-fast 就不会出现 Hash 校验不符的问题了。

   apt-fast 安装配置请参看之前的文章:ppa 安装 apt-fast

建议继续学习

  1. HashMap解决hash冲突的方法 (阅读 12,461)
  2. 关于memcache分布式一致性hash (阅读 11,660)
  3. MinHash原理与应用 (阅读 6,920)
  4. 无锁HashMap的原理与实现 (阅读 6,581)
  5. LVS hash size解决4096个并发的问题 (阅读 6,280)
  6. 如果用户在5分钟内重复上线,就给他发警告,问如何设计? (阅读 5,882)
  7. 分布式系统hash策略 (阅读 5,121)
  8. 记一下我的ubuntu升级到10.04时遇到都问题 (阅读 4,760)
  9. ubuntu10.10 使用mrtg监控服务器的cpu、内存、网络等等情况 (阅读 4,701)
  10. Ubuntu中apt-get列出的软件包前面的字母标识含义 (阅读 4,462)