Возобновление 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.
3 ответа
Решение было довольно простым, но мне понадобилось время, чтобы понять его. Я должен был удалить apt-mirror
и все его файлы конфигурации и т. д.
Решение:
$ sudo apt-get --purge remove apt-mirror
Сообщалось о некоторых ошибках, когда оставались не пустые каталоги, т.е. dkpg
сообщили о некоторых ошибках.
Затем я удалил каталоги так:
$ sudo rm -rf /var/spool/apt-mirror
Обратите внимание, что могут быть другие каталоги, которые не удаляются. Таким образом, вы должны проверить вывод первой команды.
Решение для "...gzip: stdin: не в формате gzip...":
Я использую Ubuntu 16.04 LTS 64bit. Вам нужно удалить ТОЛЬКО папку skel, затем снова запустить apt-mirror!
$ sudo rm -rf /var/spool/apt-mirror/skel/
$ apt-mirror
Я не знаю почему, но это работает для меня.
Похоже, этот скрипт решил мою проблему https://github.com/apt-mirror/apt-mirror/issues/113.
Проверить модифицированную версию скрипта (прокрутить вниз)
ОБНОВЛЕНИЕ с подробностями.
Я использовал сценарий, опубликованный rinnaz. Сохранил это как файл *.sh и запустил.
#!/бин/баш # комбинированные решения для зеркала 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" # затем обрезаем все лишние пробелы # затем мы обрезаем строку по разделительному пробелу и берем третье значение dataFolder=$(grep -F "set base_path" /etc/apt/mirror.list | tr -s " " | cut -d' ' -f3) echo "Путь к базовой папке, заданный в /etc/apt/mirror.list: $dataFolder" подходящее зеркало эхо echo -n "Вы хотите проверить сумму MD5 и ошибку загрузки (авто Y через 5 секунд)? [Y/n]" эхо прочитать -t 5 ответ выход_статус=$? если [ $exit_status -ne 0 ] || [ "$answer" != "${answer#[Yy]}" ];тогда НЕУДАЧНЫЕ ПАКЕТЫ="" echo "Чтение и проверка контрольной суммы MD5 с использованием файла: $dataFolder/var/MD5" #cd $dataFolder/зеркало rm -f FAILED_MD5.txt echo "Файл с ошибкой будет сохранен в: $(PWD)/FAILED_MD5.txt" в то время как IFS='' читать строку -r || [[ -n "$line" ]]; делать #echo "Проверка: $line" сумма = $ (эхо $ строка | вырезать -d' ' -f1) имя_файла=$(echo $line | cut -d' ' -f2) echo "$sum $dataFolder/mirror/$filename" | md5sum -c - РЕЗУЛЬТАТ=$? если [ $RESULT -ne 0 ];тогда echo "$dataFolder/mirror/$filename" >> FAILED_MD5.txt wget -O $dataFolder/зеркало/$filename $filename echo "$sum $dataFolder/mirror/$filename" | md5sum -c - ПОДРЕЗУЛЬТАТ=$? если [ $SUBRESULT -ne 0 ];тогда echo "Извините, ошибка контрольной суммы снова для файла: $dataFolder/mirror/$filename" $FAILEDPACKAGES+="$dataFolder/mirror/$filename Опять ошибка, извините, не могу помочь" фи фи Выполнено