Локальный репозиторий OpenSolaris

Замечательная статья Филиппа Торчинского о том, как создать локальный репозиторий OpenSolaris (взято отсюда). Думаю, большинству из наших участников сообщества будет полезно.

Если в городе или микрорайоне есть внутренняя сеть с бесплатным трафиком или если надо обновлять системы компании с сервера в локальной сети, локальный репозиторий пакетов — естественный выбор. Как его сделать?

Для репозитория нам понадобится вначале скачать список всех пакетов, которые есть в главном репозитории OpenSolaris — pkg.opensolaris.org. Затем мы скачаем сами пакеты, настроим локальную службу репозитория, загрузим в локальный репозиторий все пакеты и проверим, работает ли репозиторий.
До последнего времени система репозиториев OpenSolaris не предусматривала зеркальных репозиториев с автоматическим обновлением, однако сейчас стало возможным организовывать такие зеркальные серверы. Обратитесь к инструкции для создания зеркального репозитория.

[ad#ga-468-60]

Нижеописанная процедура была необходима ранее для создания зеркального репозитория без автоматического обновления в версии 2008.05. Если вам нужен зеркальный репозиторий с обновлением, основанный на репозитории pkg.opensolaris.org/dev (постоянно обновляемые между выпусками OpenSolaris пакеты), пожалуйста, следуйте вот этой инструкции.

Создаем рабочий каталог и переходим в него:

mkdir work; cd work

Здесь у нас будут лежать пакеты — до укладки в репозиторий.

Скачиваем список пакетов:

pkgrecv -s pkg.opensolaris.org -n > pkg_list_oso.lst

В надежде, что буфер командной строки вместит весь список пакетов, выкачиваем из сети сами пакеты (на 25.12.2008 это было примерно 4,83 Гб) простой командой for:

for fmri in `cat pkg_list_oso.lst `; do pkgrecv -s pkg.opensolaris.org $fmri; done

Теперь создадим отдельную файловую систему в пуле ZFS, для которой включим сжатие и отменим запись времени доступа — для того, чтобы занимала меньше места и работала быстрее:

zfs create -o compression=on -o atime=off rpool/depot

Настроим локальную службу репозитория, как описано в руководстве на стр.66 (оно было выпущено для OpenSolaris 2008.05, но в части создания репозитория изменений между выпусками 2008.05 и 2008.11 нет):

svccfg -s application/pkg/server setprop pkg/port=10000
svccfg -s application/pkg/server setprop pkg/inst_root=/rpool/depot
svcadm enable application/pkg/server

Если служба репозитория раньше уже запускалась на этом компьютере, вместо последней команды надо дать команды

svcadm refresh application/pkg/server
svcadm restart application/pkg/server

Теперь откроем в окне веб-обозревателя (например, Mozilla) страницу http://localhost:10000.

Должно получиться нечто вроде следующего:

pkg server ok
Statistics
Number of packages: 0
Number of in-flight transactions: 0
Number of catalogs served: 0
Number of manifests served: 0
Number of files served: 0
Number of flists requested: 0
Number of files served by flist: 0
Number of packages renamed: 0

Теперь надо добавить пакеты в репозиторий. Убедимся, что мы находимся в том самом каталоге, в подкаталогах которого лежат скачанные пакеты. Запускаем загрузку пакетов в репозиторий (процесс занимает достаточно много времени, по состоянию на 25.12.2008 загружается 1508 пакетов):

for i in *
do
pkgname=`grep '^#' $i/manifest | sed 's/^# //' | sed 's/,.*//'`
eval `pkgsend open -e $pkgname`
pkgsend include -d $i $i/manifest
pkgsend close
done

Теперь наш репозиторий готов. Его можно использовать для установки пакетов. А еще, благодаря zfs, можно создать снимок содержащей наш репозиторий файловой системы

zfs snapshot rpool/depot@distrib

отправить его в файл zfs send rpool/depot@distrib > depot.distrib.zfs и записать этот файл на диск и распространить среди друзей и знакомых, которым нужен локальный репозиторий. Им останется только настроить depotd и загрузить себе файловую систему с репозиторием командой zfs receive из файла depot.distrib.zfs.

HostLife - лучший платный хостинг


Systemintegra

Speak Your Mind

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Пожертвование