Динамическая загрузка пакетов c вебсервера

  • Печать

Решил я облегчить загружаемый по сети образ до вменяемых размеров методом выноса из него пакетов и динамической их загрузки на клиентов по необходимости, но оказалось, что эта функция и не работает (во всяком случае у меня).Смотрю в лог и вижу - пакеты грузятся и не распаковываются, да к тому же подгружаются не того размера, пришлось поковыряться в конфигах и наладить всё это дело.

В итоге изменил скрипт ответственный за загрузку и распаковку динамических пакетов packages/base/bin/pkg.
Все изыскания описывать не буду, надо заменить в скрипте способ загрузки на wget и команду распаковки, т.е. меняем строки с 28 (или со строки `transport ${BASEPATH}/$4/$2.$3 /$2.$3$SERVER_IP`) по 44 (или по вторую строку rm /$2.$3 после) на:

( HTML ломает некоторые знаки. Для точного копирования команд справа от листинга есть кнопка <>)

#Грузим файл
wget $BASEURL/$4/$2.$3
#Меняем расширение
mv /$2.$3 /$2.tar
            fi
        fi
#Распаковываем и удаляем ненужный более архив
        if [ -s /$2.tar ] ; then
tar -C $PKGDIR -xf /$2.tar etc/rc$CURRENTRC.d 2> /dev/null
                if [ -e $PKGDIR/etc/rc$CURRENTRC.d ] ; then
                ls $PKGDIR/etc/rc$CURRENTRC.d >> $INITLIST
            fi
            rm -Rf $PKGDIR/* 2>/dev/null
tar -C / -xf /$2.tar
            rm /$2.tar
            echo_log "Ok" $debug
        else
            if [ -e /$2.tar ] ; then
                rm /$2.tar

Ну и рассмотрим на примере rdesktop как теперь грузить пакеты c вебсервера.

В build.conf вместо package rdesktop пишем pkg rdesktop и собираем образ. После сборки получим в папке boot-images/pkg-packages упакованный пакет rdesktop.pkg вместе с пакетами от которых он зависит.
Копируем все пакеты на вебсервер, в папку pgk (можно в любую другую, задаётся в сетевом конфиге параметром PKG_PREFIX) и задаём адрес сервера в build.conf параметром baseurl.

Далее в thinstation.conf-(hostname, ip или MAC) или thinstation.conf.group-*** пишем какие пакеты подгружаем, вместе с зависимостями:

PKG_PACKAGES="rdesktop alsa gtkdialog pango fontconfig messagebox"
PKG_PREFIX=pkg

Если пакет не сессионный, то можно его подгружать в фоновом режиме:

PKG_PACKAGES_BG="firefox"

Вот как бы и всё.
Ещё статья, для полного счастья.

Обсудить на форуме (комментариев 5).