Zeroconf - Анонсирование источников пакетов для urpmi

Начиная с релиза 2010.1 (п. 3.19.3 спецификации ) в Mandriva появилась возможность искать дистрибутив Mandriva в сети посредством Zeroconf (Avahi). Я намеренно пропустил слово «локальной», т.к. хоть zeroconf в основном используется для анонсирования сетевых служб в локальной сети, но по факту он может действовать и за пределами локальной сети, главное чтобы трафик данной службы не блокировался для выхода во внешний мир.

Что нужно для того чтобы анонсировать зеркало дистрибутива в сети? Это сделать довольно просто:

1. Сперва нужно определиться как именно вы собираетесь предоставлять доступ к вашему дистрибутиву.
URPMI может получать доступ к дистрибутиву посредством HTTP, FTP, RSYNC. Соответственно у вас должен быть реализован один из способов предоставления доступа к дистрибутиву. Данный шаг пропускается в рассмотрении.
Стоит лишь заметить, что для определения архитектуры, версии, типа дистрибутива используется файл /etc/product.id. Ниже привожу содержимое этого файла для cooker ветки
vendor=Mandriva,distribution=Mandriva Linux,type=Basic,version=2011.0,branch=Devel,release=1,arch=x86_64,product=Free
Как видно из этого файла, версия cooker ветки определена как 2011.0, данный факт обязательно нужно учесть, если вы собираетесь также распространять cooker ветку (urpmi при подключении источников использует метку version, а обычно для cooker на зеркалах используется именно cooker. Не забудте сделать ссылку.)

2. Настроить avahi демон.
Для настройки avahi нужно создать файл, например rsync_mandriva_dist.service в директории /etc/avahi/services примерно следующего содержимого (для rsync):
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">Mandriva urpmi repository on %h (RSYNC)</name>

  <service>
    <type>_mdv_urpmi._tcp</type>
    <subtype>_rsync._sub._mdv_urpmi._tcp</subtype>
    <port>873</port>
    <txt-record>protocol=rsync</txt-record>
    <txt-record>path=/mandriva</txt-record>
  </service>

</service-group>


В файле описания сервисаобящательно должны быть следующие записи:
  • Тип сервиса: _mdv_urpmi
  • Две DNS-SD записи тапа TXT:
    • <txt-record>protocol=...</txt-record>
    • <txt-record>path=....</txt-record>

protocol м.б. равным http, ftp, rsync
path — путь до корня дистрибутива. Дистрибутив будет искаться по следующему пути (например к cooker ветке): protocol://host:port/path/devel/2011.0/x86_64/..., т.е. путь должен быть равным пути к местонахождению директорий самого дистрибутива (official, devel...).

Этого достаточно для анонсирования дистрибутива в сети, avahi демон автоматически подхватит новый файл сервиса.

Теперь можно посмотреть как подключить источник дистрибутива через zeroconf.
Во-первых стоит убедится что у вас установлен необходимый модуль perl для работы с zeroconf (по-умолчнию почему-то в cooker ветке он не был установлен).
rpm -qa perl-Net-Bonjour

Если команда не показала имя пакета, значит у вас он не установлен, для его установки введите команду от имени проьзователя root
urpmi perl-Net-Bonjour

Для подключения источников воспользуйтесь командами:
urpmi.addmedia --distrib --zeroconf

или например
urpmi.addmedia --zeroconf main media/main/release

или для получения списка зеркал
urpmi.addmedia --distrib --zeroconf --mirrorlist


Если urpmi сможет через zeroconf найти запись об анонсированном дистрибутиве, то он подключит требуемые источники.

Еще раз напомню, что urpmi формирует запрос к источнику в соответствии со следующим шаблоном:
<advertised repository path>/lowercase(<branch>)/<version>/<arch>

advertised repository path — является путем к корню дистрибутива (protocol://host:port/path — берется из информации zeroconf)
branch, version, arch — берется из файла /etc/product.id компьютера клиента.

Зная это можно также анонсировать plf и другие источники, либо добавить соответствующие записи в файл media.cfg дистрибутива.

В случае обнаружения ошибок, дополнений, либо неточностей, прошу отписаться в комментариях.
Опубликовать в своем блоге livejournal.com

Комментарии Вконтакте facebook

Комментарии (1)

rss свернуть / развернуть
+
0
Огромное спасибо. Думаю в 2010.2 сборках Edumandriva и Community LXDE поставим ярлык подключения локальных репозиториев и скрипт для их анонсирования на основе этой статьи.
avatar

admin

  • 29 ноября 2010, 00:40
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Блоги, Полезные советы и секреты, Zeroconf - Анонсирование источников пакетов для urpmi