Задача: сделать полное локальное оффлайн-зеркало Debian 13 (trixie, amd64) на внешний NTFS-диск, чтобы потом на машине без интернета ставить пакеты через apt install.
Источник — mirror.yandex.ru. Диск монтируется через Dolphin в /media/nadim/9C46944C469428D2.
Что пробовал
1. apt-mirror
Настроил /etc/apt/mirror.list:
set base_path /media/nadim/9C46944C469428D2/debian-repo
set nthreads 5
set _tilde 0
deb http://mirror.yandex.ru/debian/ trixie main contrib non-free non-free-firmware
deb http://mirror.yandex.ru/debian/ trixie-updates main contrib non-free non-free-firmware
deb http://mirror.yandex.ru/debian-security/ trixie-security main contrib non-free non-free-firmware
deb http://mirror.yandex.ru/debian/ trixie-backports main contrib non-free non-free-firmware
Скачал ~185 ГБ пакетов, всё завершилось без ошибок. Структура каталогов на месте: trixie, trixie-updates, trixie-backports, trixie-security.
Прописал в sources.list:
deb [trusted=yes] file:/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian/ trixie main contrib non-free non-free-firmware
deb [trusted=yes] file:/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian/ trixie-updates main contrib non-free non-free-firmware
deb [trusted=yes] file:/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian-security/ trixie-security main contrib non-free non-free-firmware
deb [trusted=yes] file:/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian/ trixie-backports main contrib non-free non-free-firmware
Результат: apt update крутится в цикле — получает файлы Packages (Пол), потом игнорирует (Игн), и так по кругу. apt install htop — «Невозможно найти пакет».
Причина: apt-mirror не скачивает by-hash директории, переводы (i18n), DEP-11 метаданные (AppStream-иконки). Современный apt без by-hash не может нормально прочитать индексы.
2. rsync -avz для dists/
Попробовал докачать только каталоги dists/ через rsync:
sudo rsync -avz --delete rsync://mirror.yandex.ru/debian/dists/trixie/ \
/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian/dists/trixie/
Результат: rsync скопировал симлинки вместо реальных файлов. На зеркале Яндекса dists/ содержит симлинки на служебный каталог zzz-dists/:
InRelease -> ../../zzz-dists/trixie/InRelease
Packages.xz -> by-hash/SHA256/d103f0fd...
Сам zzz-dists не скачался — все симлинки битые.
3. rsync -avzL (dereference symlinks)
Добавил флаг -L, чтобы rsync копировал реальные файлы вместо симлинков:
sudo rsync -avzL --delete rsync://mirror.yandex.ru/debian/dists/trixie/ \
/media/nadim/9C46944C469428D2/debian-repo/mirror/mirror.yandex.ru/debian/dists/trixie/
Результат: rsync попал в бесконечную рекурсию по симлинкам — начал создавать вложенные каталоги updates/updates/updates/updates/... уходящие на десятки уровней вглубь. Завершился с ошибкой. После этого apt update по-прежнему не работает — файлы не на месте или побились.
Вопрос
Как правильно сделать полное оффлайн-зеркало одного релиза Debian 13 (trixie, amd64) на внешний NTFS-диск, чтобы apt update + apt install работали без ошибок?
Интересует рабочий подход — apt-mirror, rsync, debmirror или что-то ещё. Главное, чтобы в итоге получилась структура, с которой apt нормально работает через file://.
Система: Debian 13 trixie, KDE, amd64. HDD — внешний, NTFS, монтируется через Dolphin.