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

Reply via email to