Как создать оффлайн репозиторий для несвободных Debian? - PullRequest
1 голос
/ 24 февраля 2012

Я использую debian squeeze и хочу создать автономный репозиторий или cd / dvd для несвободной ветки debian. Я посмотрел в интернете, и все, что я обнаружил, это то, что нет ни iso-образов, ни jidgo-файлов для создания такого образа, поэтому у меня была идея получить пакеты с одного из серверов пакетов debian, используя:

 wget -r --no-parent -nH -A*all.deb,*any.deb,*i386.deb \
 ftp://debian.oregonstate.edu/debian/pool/non-free/

Я знаю, что я должен использовать file: в моем */etc/apt/sources.list* для указания локальных репозиториев, но как мне на самом деле создать такой, чтобы apt или aptitude понимали это?

1 Ответ

0 голосов
/ 08 февраля 2015

(ответ в вопросном редактировании. Преобразован в вики-ответ сообщества. См. Какое действие подходит для добавления ответа на вопрос к самому вопросу? )

ОП написал:

Обновление: с помощью нескольких уродливых уловок я смог извлечь необходимые данные из пула и папки 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
...