由于索引文件损坏,恢复 apt-mirror 失败

由于索引文件损坏,恢复 apt-mirror 失败

apt-mirror我在突然终止(我的 VPN 连接被终止)后无法恢复。

我收到一条错误消息,指出某些apt-mirror文件已损坏。也许是索引文件?我尝试删除所有下载的文件,但没有效果。

错误输出如下所示:

$ sudo apt-mirror
Downloading 24 index files using 5 threads...
Begin time: Fri Sep  5 09:36:09 2014
[5]... [4]... [3]... [2]... [1]... [0]... 
End time: Fri Sep  5 09:36:09 2014

Proceed indexes: [P
gzip: stdin: not in gzip format
P
gzip: stdin: not in gzip format
P
gzip: stdin: not in gzip format
P
gzip: stdin: not in gzip format
]

0.0 bytes will be downloaded into archive.
Downloading 0 archive files using 0 threads...

我在网上找到了一些答案,但都无济于事。我想知道这些 gzip 文件存储在哪里。然后应该可以删除它们并重新启动 apt-mirror。

答案1

“...gzip:stdin:不是 gzip 格式...”的解决方案:

我使用 Ubuntu 16.04 LTS 64 位版本。您只需删除“skel”文件夹,然后再次运行 apt-mirror!

$ sudo rm -rf /var/spool/apt-mirror/skel/
$ apt-mirror

我不知道为什么但它对我有用。

答案2

解决方案相当简单,但我花了一段时间才找到答案。我必须删除apt-mirror它的所有配置文件等。

解决方案:

$ sudo apt-get --purge remove apt-mirror

报告了一些错误,其中没有留下空目录,即dkpg报告了一些错误。

然后我删除了如下目录:

$ sudo rm -rf /var/spool/apt-mirror

请注意,可能还有其他目录无法删除。因此,您必须检查第一个命令的输出。

答案3

看起来这个脚本解决了我的问题https://github.com/apt-mirror/apt-mirror/issues/113

检查脚本的修改版本(向下滚动)

更新提供详细信息。

我使用了 rinnaz 发布的脚本。将其保存为 *.sh 文件并运行。

/bin/bash #!/bin/bash

# apt 镜像的组合解决方案来自:https://github.com/apt-mirror/apt-mirror/issues/49,https://github.com/apt-mirror/apt-mirror/issues/102
# 我必须创建此文件,以解决无法下载 DEP-11 @2 文件的问题
# 所以我所做的就是手动运行 apt mirror,然后每次下载其他图标文件
# Grep 将搜索以“set base_path”开头的行
# 然后我们修剪所有多余的空格
# 然后我们用分隔符空格剪切字符串并取第三个值

数据文件夹 = $(grep -F“set base_path”/etc/apt/mirror.list | tr -s“”| cut -d' '-f3)
echo "/etc/apt/mirror.list 中设置的基本文件夹路径是:$dataFolder"
apt-镜像
回声
echo -n "您是否要检查 MD5 总数并且下载失败(5 秒内自动 Y)?[Y/n]"
回声
read -t 5 答案
退出状态=$?
如果 [ $exit_status -ne 0 ] || [ "$answer" != "${answer#[Yy]}" ];则
    FAILEDPACKAGES=""
    echo“使用文件读取并检查 MD5 校验和:$dataFolder/var/MD5”
    #cd $数据文件夹/镜像
    rm -f FAILED_MD5.txt
    echo "失败文件将存储在:$(PWD)/FAILED_MD5.txt"
    当 IFS='' 读取 -r 行 || [[ -n "$line" ]]; 执行
        #echo "检查:$line"
        总和=$(echo $line | cut -d' ' -f1)
        文件名=$(echo $line | cut -d' ' -f2)
        回显“$sum $dataFolder/mirror/$filename”|md5sum -c -
        结果=$?
        如果 [ $RESULT -ne 0 ];那么
            回显“$dataFolder/mirror/$filename”>>FAILED_MD5.txt
            wget -O $数据文件夹/镜像/$文件名 $文件名
            回显“$sum $dataFolder/mirror/$filename”|md5sum -c -
            子结果=$?
            如果 [ $SUBRESULT -ne 0 ];那么
                echo "抱歉,文件 $dataFolder/mirror/$filename 的校验再次失败"
                $FAILEDPACKAGES+="$dataFolder/mirror/$filename 再次失败,抱歉无法帮助"
    完毕

相关内容