|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alexander V. Ribchansky 2:5020/400 31 Jul 2006 15:41:25 To : Andrey Zonov Subject : Re: portupgrade -------------------------------------------------------------------------------- Andrey Zonov пишет: > Привет, All! > > Есть сервачок под 5.4 - там стоит куча барохла, надо это барахло обновить, но > там трафф очень дорогой :) Есть другой сервачок с 4.11 там инет халявный. > Hабор софта стоит разный. Внимание вопрос: как автоматизировать процесс > выкачки дистфайлов на 2ом серваке для 1ого. Вообщем как получить список ссылок > дистфайлов для 1ого сервака? > Успехов! Я это делаю следующим наборчиком скриптов: 00.core_soft_list.sh 01.dist-url-list.sh 02.dist-fetch.sh Скрипты запускаются на машине, для которой надо получить список URL-ов на нужные дистфайлы. Результатом работы скриптов есть файлик url который надо запустить на машине с халявным инетом. Да, выкачивается все wget-ом. Последовательность действий такая: 1. положить скрипты куда-то на исходном серваке. 1.1 во всех скриптах подправить переменную base указав в ней путь к месту, где лежат скрипты 1.2 перейти в каталог, где лежат скрипты 2. запустить скрипт 00.core_soft_list.sh > ./core_soft_list 2.1 в результате получится файлик, core_soft_list в котором будет список ключевого софта на исходном сервачке (тоесть софта, который через зависимости подтянет весь остальной софт этого сервачка) 3. запустить скрипт 01.dist-url-list.sh 3.1 в результате получится файлик url. Его надо положить в какой-нить каталог на серваке с халявным инетом и запустить nohup sh url&. ждать, пока оно все вытянет в этот каталог. 3.2 перенести каталог с скачаными дистфайлами на исходный сервак 4. подправить в скрипте 02.dist-fetch.sh путь к каталогу с дистфайлами в переменной MASTER_SITE_OVERRIDE а еще лучше внести эту переменную в /etc/make.conf с правильным путем к дистфайло-помойке 4.1 запустить скрипт 02.dist-fetch.sh, который разложит все выкачанные дистфайлы по своим местам в /usr/ports/distfiles Вроде бы и сложно, но на самом деле - просто и дешево. Преимущества метода: - для выкачивания софта подойдет любой unix, где есть wget - не нужно иметь дерево портов на серваке с инетом - вытягивание дистфайлов идет в фоновом режиме - не нужно таскать все distfiles, с сервака на сервак тягаются только нехватающие дистфайлы недостатки: - некоторая кривость скриптов, обусловленная руками и спешкой Жо) Вышеописанный метод работает уже больше года. Есть еще продолжение этого набора для автоматизации пересборки софта. Если кому надо - кричите! Да, здоровая критика и предложения принимаются.. Жо) ##00.core_soft_list.sh BEGIN #!/bin/sh base="/usr/home/shurik/bin" pkg_info | awk '{print $1}'| \ while read name do echo $name `pkg_info -R $name | wc -l` done | egrep \ 3$ | cut -f 1 -d " " | xargs pkg_info -o | fgrep -A 1 Origin: | egrep -v 'Origin:|--' | sort ##00.core_soft_list.sh END ##01.dist-url-list.sh BEGIN #!/bin/sh export FETCH_CMD='wget -c' export DISABLE_SIZE="YES" base="/usr/home/shurik/bin" a=`grep -v \# $base/core_soft_list` echo "REMOVING OLD url-list!!!" rm $base/url-list echo "Start to build url list, please wait..." for dir in $a do echo $dir echo cd /usr/ports/$dir && make fetch-recursive-list | sed 's|/usr/bin/env||g' >> $base/url-list done echo "Done!" echo "Now we sort urls, please wait..." sort -u $base/url-list > $base/url rm $base/url-list echo "Done!" ##01.dist-url-list.sh END ##02.dist-fetch.sh BEGIN #!/bin/sh export MASTER_SITE_OVERRIDE="file:///usr/storage/tmp-download/" base="/usr/home/shurik/bin" a=`cat $base/core_soft_list` echo "Start to fetch distfiles, please wait..." for dir in $a do echo $dir echo cd /usr/ports/$dir && make fetch-recursive done echo "Done!" ##02.dist-fetch.sh END --- ifmail v.2.15dev5.3 * Origin: 813326757 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/16781f89bf186.html, оценка из 5, голосов 10
|