Re: Зеркало Sarge
On 2005.02.02 at 16:19:03 +0300, Artem Chuprina wrote:
> Sergey Matashuk -> debian-russian@lists.debian.org @ Wed, 2 Feb 2005 15:10:34 +0200:
>
> SM> Возник следующий вопрос: как сделать локальное зеркало только Sarge?
> SM> Хотелось бы сохранить структуру каталогов (pool/main/a/???/???.deb)
> SM> Нужно, чтобы все это счастье можно было бы просто обновлять. Пробовал
> SM> Брать Packages.gz, grepом доставать оттуда линки, скармливать их wget.
> SM> Но, как следить за обновлениями? Если проделать то же, допустим, через
> SM> неделю, то некоторые имена файлов поменяются, я их успешно скопирую, и
> SM> со временем получится свалка файлов, которых нет в моем Packages.
>
> Если тебе нужно зеркало, то его следует миррорить каким-нибудь более
> осмысленным протоколом. У меня используется absurd_debmirror.
Осмысленность протокола тут абсолютно некритична. Миррор debian устроен
так, что обновляются без изменения названия только файлы Packages.gz,
Sources.gz и Contents-<arch>.gz. Вот их имеет смысл тянуть rsync-ом, и
то, если это делать так как делает absurd_debmirror, это приводит к
тому, что в момент обновления миррора (когда новый Packages уже
выкачался а пакеты -еще нет) миррор невалиден.
Стоило бы делать так:
1. Создаем временные копии файлов Packages, Sources и Contents-<arch>.
2. rsync-ом синхронизируем их с текущей версией.
3. Строим список файлов, которые есть в новых Packages и Sources, но
отсутствут в мирроре.
4. Выкачиваем их. Здесь можно использовать любой протокол. Поскольку
выкачиваются только новые файлы, rsync принципиальных преимуществ перед
http/ftp не имеет.
5. Кладем новые Packages и Sources на место старых. С этого момента наш
миррор уже начинает раздавать своим клиентам новую версию.
6. Строим список файлов, которые не присутствуют в Packages и Sources,
но присутствуют в мирроре и удаляем их.
В принципе, absurd_debmirror делает почти то же самое, с той разницей
что не делает пункт 1, поэтому в течении пунктов 3-4 миррор бывает
невалиден.
Reply to: