Creating OpenSolaris 2009.06 repository pkg

Процедура настройки репозитория состоит из следующих этапов:
– Получение ISO-образа с репозиторием OpenSolaris
– Подготовка файловой системы
– Копирование содержимого репозитория из образа
– Настройка сервера через сервисы
– Настройка клиента и проверка работоспособности сервера
– Обновление пакетов и исправление контрольных сумм
– Окончательное тестирование
Далее рассмотрим, что нужно сделать на каждом этапе.
Получение ISO-образа с репозиторием OpenSolaris
Итак для настройки репозитория нам понадобится образ содержащий пакеты репозитория
его можно скачать, например на genunix.org или sun.com, а точнее так:
# wget ftp://osol.arhipkin.com/pub/osol-repo-0906-full.iso
Репозиторий можно скачать в виде 2-ух образов, которые помещаются на DVD-диск объемом
4,7 Гб, либо в виде одного образа размером около 7,2 Гб. Приведенные выше ссылки
указывают на репозиторий в единственном образе. Впрочем, версию в двух образах можно
найти рядом.
Подготовка файловой системы
Создадим отдельную файловую систему ZFS для того, что бы разместить на ней
репозиторий. Отдельная файловая систем а ZFS для репозитория дает нам следующие
преимущества:
l Достигается лучшая производительность
l Возможность установки индивидуальных параметров для файловой системы, таких
как сжатие и обновление времени доступа
l Создание снапшотов и бэкапов файловой системы с репозиторием
Для экономии дискового пространства применим сжатие(опция compression), а для
увеличения быстродействия отключим обновление времени доступа(опция atime).
Естественно, что все команды здесь и далее должны выполняться с правами
суперпользователя. Создаем:
# zfs create -o compression=on -o atime=off rpool/repo
Теперь когда у нас есть файловая система для репозитория и собственно сами данные в
образе, нужно скопировать данные из образа на жесткий диск.
Копирование содержимого репозитория из образа
Для копирования данных нужно смонтировать образ репозитория, и затем скопировать все
данные в, подготовленное нами на предыдущем шаге, место:
# mount -F hsfs $(lofiadm -a /downloads/osol-repo-0906-full.iso) /mnt
# rsync -aP /mnt/repo /rpool/repo
Обратите внимание: отсутствие слэшей в конце путей принципиально (для получения
подробностей обращайтесь к man rsync.). После того, как репозиторий скопирован образ
можно отмонтировать:
# umount /mnt
# lofiadm -d /dev/lofi/1
В последней строке возможна другая цифра в зависимости от подключенных на данный
момент устройств. Итак, репозиторий получен и скопирован переходим к настройке сервиса.
Настройка сервера через сервисы
Теперь нам необходимо настроить сервис обслуживающий репозиторий, его исполняемый
файл находиться в /usr/lib и называется pkg.depotd (подробнее смотрите man pkg.depotd).
Сначала необходимо указать корневой каталог нашего репозитория, который мы подготовили
ранее:
# svccfg -s pkg/server setprop pkg/inst_root=/rpool/repo/repo
Опционально можно указать порт (по умолчанию 80). Установим его значение равным 10000:
# svccfg -s pkg/server setprop pkg/port=10000
Копируем конфигурационный файл и указываем путь к нему для сервиса:
# cp -p /rpool/repo/repo/cfg_cache /rpool/repo/
# svccfg -s pkg/server setprop pkg/cfg_file=/rpool/repo/cfg_cache
Далее правим конфигурационный файл:
# vi /rpool/repo/cfg_cache
Нужно поменять значение параметра origins и указать адрес репозитория, на доступное по
сети имя, например http://sunadm.spb.su:10000. Необязательно, но можно поменять некоторые
другие параметры и добавить туда например название вашей организации.
Далее можно проверить правильно ли мы изменили настойки:
# svcadm refresh application/pkg/server
# svcprop pkg/server
И посмотреть в выводе последней команды внесены ли наши изменения. Если все в порядке
запускаем сервис:
# svcadm restart application/pkg/server
# svcadm enable application/pkg/server
На этом настройка репозитория закончена. Далее мы настроим клиента на использование
нашего репозитория и проверим его работоспособность, затем обновим репозиторий и
проведем окончательную проверку.
Настройка клиента и проверка работоспособности сервера
Клиент может использовать наш репозиторий либо как основной репозиторий, либо как
зеркало репозитория pkg.opensolaris.org. При использовании нашего репозитория, как зеркала
мы теряем автономность. В этом случае клиент производит поиск и другие операции с
метаданными используя основной сервер pkg.opensolaris.org, при установке пакета, если он
присутствует на нашем зеркале он скачивается с него. При недоступном основном сервере
наша система не будет работать. При использовании нашего репозитория как основного, все
взаимодействие производиться только с ним и наша система обретет автономность. Но в
таком случае, если наш репозиторий не обновлен нам не будут доступны последние версии
пакетов.