mirroring Debian the hard way
>>>>> Струков Аркадий <ark@bezopasnik.org> writes:
> извините если чтото делаю не так - впервые задаю вопрос таким
> способом
> Вобщем поставили предо мной задачу создания собственного репазитария
> дебиановского для архитектур i386 amd64 и самое то что удручает по
> определенным причинам нету возможности использовать debmirror есть
> только два варианта wget и rsync Но вот ни как не могу разобраться
> как устроен дебиановский репазитарий
> Какие надо разделы выкачивать ?
> мне нужно софт обновлять и саму систему - чисто из собственного
> репазитария
[…]
Могу предложить следующую «технологию», основанную на
инструменте grep-dctrl(1), позволяющем получить выборку из
данных Packages- или Sources-файла.
Во-первых, получаем файлы согласно списку, пример которого
привожу отдельной MIME-частью (для Debian Wheezy; другие версии
— аналогично.) Файлам директории dists/ копируемого зеркала
даются соответствующие имена в, e. g., /srv/debian/dists/ (в
«местных» соглашениях — /home/public/debian/dists/.)
Во-вторых, определяем относительные имена файлов для выбранных
пакетов. E. g., для всех пакетов архитектур amd64 и i386:
#!/bin/bash
prefix=/srv/debian
dists=${prefix}/dists
mirror=http://ftp.ru.debian.org/debian/
suites=wheezy
arches='amd64 i386'
packages_lists0 {
local a s
for a in $arches ; do
for s in $suites ; do
find "${dists}/${s}"/*/binary-"$a"/ \
-type f -name Packages.bz2 -print0 \
|| return
done
done
}
filenames {
grep-dctrl -s Filename -F Package --regex=. \
<(packages_lists0 | xargs -r0 -- bzip2 -cd --) \
| sed -e '/^Filename: /!d; s///'
}
Наконец, убираем из полученного списка повторы (возникающие для
пакетов с Architecture: all); проверяем на существование этих
файлов, и формируем список URI для получения; подобно:
uris {
local f g
LC_ALL=C sort -u -t_ -k3,3 -k1 \
| while read f ; do
if test -e "${prefix}/${f}" ; then
continue
fi
printf %s\\n "${mirror%/}/${f}"
done
}
Полученный список отдаем GNU Wget, e. g. (добавив --cut-dirs=
по-вкусу):
$ LC_ALL=C wget --background \
--force-directories --timestamping --continue --server-response \
--input-file=1317210506.uris
или Rsync, e. g. (соответственно убрав ${mirror%/}/ из аргумента
printf в коде выше):
$ rsync -uv -rOtH --ignore-existing \
--include=pool/ --include=pool/\*\*/ \
--include-from=1317210685.files \
-- rsync://ftp.de.debian.org/debian/ /srv/debian/
При использовании Wget, получаемые файлы следует помещать во
временную директорию, с последующим mv(1), дабы избежать
возможности получения пользователем зеркала неполного файла.
Напротив, такое ограничение не актуально для Rsync.
Получить dists/-файлы можно и используя Rsync. В этом случае,
однако, их также следует получать отдельно и во временную
директорию. Опять-таки, с последующим ln(1) в целевую.
--
FSF associate member #7257
http://ftp.de.debian.org/debian/dists/wheezy/Release
http://ftp.de.debian.org/debian/dists/wheezy/Release.gpg
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-all/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-all/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-all/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-amd64/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-amd64/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-amd64/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-amd64/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-amd64/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-amd64/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-i386/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-i386/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/binary-i386/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-i386/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-i386/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/debian-installer/binary-i386/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/main/source/Release
http://ftp.de.debian.org/debian/dists/wheezy/main/source/Sources.bz2
http://ftp.de.debian.org/debian/dists/wheezy/main/source/Sources.gz
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-amd64/Release
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-amd64/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-amd64/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-i386/Release
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-i386/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/contrib/binary-i386/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/contrib/source/Release
http://ftp.de.debian.org/debian/dists/wheezy/contrib/source/Sources.bz2
http://ftp.de.debian.org/debian/dists/wheezy/contrib/source/Sources.gz
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-amd64/Release
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-amd64/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-amd64/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-i386/Release
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-i386/Packages.bz2
http://ftp.de.debian.org/debian/dists/wheezy/non-free/binary-i386/Packages.gz
http://ftp.de.debian.org/debian/dists/wheezy/non-free/source/Release
http://ftp.de.debian.org/debian/dists/wheezy/non-free/source/Sources.bz2
http://ftp.de.debian.org/debian/dists/wheezy/non-free/source/Sources.gz
Reply to:
- References:
- debmirror
- From: Струков Аркадий <ark@bezopasnik.org>