Замечательная статья Филиппа Торчинского о том, как создать локальный репозиторий 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.
Speak Your Mind