В начало!  
Сделай закладку этой страницы в Digg Сделай закладку этой страницы в Del.icoi.us Сделай закладку этой страницы в Slashdot Сделай закладку этой страницы в Technorati
arrow Продукты arrow Solaris и OpenSolaris arrow Как сделать локальный репозиторий OpenSolaris


feed image

Как сделать локальный репозиторий OpenSolaris
Автор Филипп Торчинский   
06.01.2009 г.

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

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

 

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

 

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

 

Создаем рабочий каталог и переходим в него: 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.

 

Добавить комментарий


Защитный код
Обновить