分享

统信UOS系统apt刷新源报错:W:无法下载bzip2, Hash 校验和不符

李白 2021-11-10 11:46:18 发表于 已解决 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 2088

这个可能是网络网络问题导致的更新时丢包,从而下载的数据不完整或错误。
运行以下命令,得到更新需要下载的软件包列表文件地址:
    sudo apt-get update --print-uris > apt-get-urls.txt
用Firefox的downloadthemall插件下载上述列表文件。(用Firefox打开以上txt文件后批量下载)下载时注意: 文件保存位置,比如/home/你的用户名/pool 重命名掩码:填"curl/name.ext" (没有引号)。这意思是将下载的文件,若原链接为http://www.ubuntu.com/folder/subfolder/filename.gz,则保存为/home/你的用户名/pool/www.ubuntu.com/folder/subfolder/filename.gz。
下载的文件里,有几个文件名为"Release"的文件,若使用downloadthemall默认的或者上述的重命名掩码保存,由于没有文件名后缀,默认保存为"Release.txt",所以需要设置这些文件的重命名掩码为”curl/name”(没有引号)(在downloadthemall的下载选项中可通过”资源名称“字段排序后,全选文件名为Release的文件后设置重命名掩码) 设置每服务器并发下载1个文件,且关闭分块下载,否则可能会出错。
上述文件下载完成后,你的pool目录下就会有诸如”archive.canonical.com/ubuntu/dists/raring"等目录和文件。
备份原/etc/apt/source.list为/etc/apt/source.list.normal,并利用gedit等文本编辑器等的替换功能将/etc/apt/source.list中的
    deb http://
    deb-src http://
替换为
    deb file:///home/你的用户名/pool/
    deb-src file:///home/你的用户名/pool/
这样,运行升级命令sudo apt-get update后apt-get将从本地的pool目录获取软件列表文件。
sudoapt-get update成功后,此时若apt-get upgrade或者安装软件,则apt-get由于在本地找不到deb安装包而报错,此时可用以下方法获取下载链接,用downloadthemall批量下载deb包:
    sudo apt-get upgrade --yes --print-uris > ~/pool/apt-get-upgrade.txt
需要下载的deb包的链接在apt-get-upgrade.txt文件中,您需要将文件中的"file:///home/你的用户名/pool/”全部替换为“[http://"再下载 http://"再下载]。 你可以将deb包统一下载到pool/deb目录下,然后用
    sudo mount -o bind /home/你的用户名/pool/deb /var/cache/apt/archives
此时你运行apt-get upgrade之后,apt-get每次都是从本地获取deb包了。
对于取到的软件包列表的下载地址,只需要获取一次,以后每次升级只需将原pool目录下的几个目录删掉后重新用downloadthemall下载即可,不用每次都重新获取。



版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报

已有(1)人评论

跳转到指定楼层
yeyufan实名认证 手机认证 发表于 2021-11-11 11:56:44 来自 中国贵州贵阳
厉害了 还能这样操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系在线客服