>>>>> Струков Аркадий <a...@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