Обновление: с помощью нескольких уродливых уловок я смог извлечь необходимые данные из пула и папки dist.
Я использовал распакованный Package.gz
, чтобы сделать это:
grep '^Package\:.*' Packages|awk '{print $2}' >> Names.lst
grep '^Version\:.*' Packages|awk '{print $2}' >> Versions.lst
grep '^Architecture\:.*' Packages|awk '{print $2}' >> Arch.lst
С помощью vim
я нахожу и удаляю ':' в файле Versions.lst
и генерирую более короткую Content.lst
, более простую для анализа с помощью инструментов bash:
paste Names.lst Versions.lst Arch.lst >> Content.lst
Теперь я делаю это:
cat content.lst | while read line; \
do echo "$(echo $line|awk '{print $1}')\
_$(echo $line|awk '{print $2}')_$(echo $line|awk '{print $3}')";\
done >> content.lst.tmp && mv content.lst.tmp content.lst
, который генерирует мне имена файлов в нужном мне каталоге debian. Завершая мои загрузки, используя wget
, я нахожу и rsync
необходимые имена файлов. mv
здесь не работает, потому что мне нужна была структура, как это указано в Packages.gz
:
cat content.lst |while read line; \
do find debian/ -type f -name ${line}.deb -exec \
rsync -rtpog -cisR {} debian2/ \; ;done
rm -r debian && mv debian2 debian
Чтобы получить полную структуру дерева dists, я снова использовал wget
:
wget -c -r --no-parent -nH -A*.bz2,*.gz,Release \
ftp://debian.oregonstate.edu/debian/dists/squeeze/non-free/binary-i386/
Думаю, единственное, что мне сейчас нужно сделать, - это создать файл Contents.gz
.
Файл Contents.gz
можно легко создать с помощью программы apt-ftparchive
:
apt-ftparchive contents > Contents-i386 && gzip -f Contents-i386