RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Установка локального WindowsUpdate сервера под Unix
Disclaimer
Я ни в коем разе не претендую, что установка сделана правильно, корректно, "так как надо" и прочая. Я описываю только что, что у меня работает. Кроме того, я не обещаю, что это будет работать у всех, что это будет работать именно так, как задумано и т.д. и т.п.
Мысли вслух
Любимая софтверная компания для установки локального WindowsUpdate сервера предполагает наличие выделенного сервера под управлением одной из любимых операционных систем. На них сверху надо накатить любимый веб-сервер любимой софтверной компании, скачать до 200 мб дистрибутива, поставить все это, а потом ловить баги. Описываемый же способ предлагает скачать 20 килобайт исходного кода и все запустить и настроить на имеющемся Unix/Linux/*x-сервере.
Подготовка
Для работы всего этого нам понадобятся:
Apache 1.3.x
Python 2.x (проверено на 2.3)
cabextract
wget
SUSfL
Настройка Apache
Сначала необходимо настроить виртуальный хост в Apache. Настройки такие:
<VirtualHost 192.168.1.1>
ServerAdmin admin@mydomain.ru
DocumentRoot /mnt/www/winupdate.mydomain.ru/data
ServerName winupdate.mydomain.ru
ServerAlias winupdate.localnet.mydomain.ru
ErrorLog /mnt/www/winupdate.mydomain.ru/logs/error_log
CustomLog /mnt/www/winupdate.mydomain.ru/logs/access_log combined
<Directory "/mnt/www/winupdate.mydomain.ru/data">
AllowOverride All
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
<Directory "/mnt/www/winupdate.mydomain.ru/data/autoupdate">
AddHandler cgi-script .asp
AllowOverride All
Options FollowSymLinks +ExecCGI
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.htm index.html index.shtm index.shtml index.php index.php3
</VirtualHost>
Выставьте кодировку по умолчанию в windows-1251. Для пользователей русского апача: выключите механизм перекодировки.
Настройка собственно SUSfL
Потом в заданный каталоге надо установить и настроить SUSfL(альт. ссылка) - "A free set of Python scripts to replace MS SUS in your LAN" от Владимира Умнова
В файле autoupdate\sus_consts.py выставляем
susdebug = False
#prefix is path with trailing slash to your virtual host folder
prefix = "/mnt/www/winupdate.mydomain.ru/data/"
#localCabPool is path with trailing slash to your pool, where updates will be stored
localCabPool = "/mnt/www/winupdate.mydomain.ru/data/selfupdate/"
#UseWUServer = [True|False] if set to True all updates will be downloaded from local
UseWUServer = False
и указываем, какие продукты и каких версий нам нужны:
Не забываем сделать chmod a+x autoupdate/getmanifest.asp и проверить в нем шебанг (!#/usr/local/bin/python или ваш путь к python).
Потом надо установить, а что же качать-то. Первыми с сайта любимой компании качаются так называемые словари. Список словарей лежит в autoupdate\selfupdate.txt. Удаляем из него лишние строчки - например, те, которые содержат неиспользуемые в нашей сети языки. Будьте внимательны и аккуратны.
Первый запуск
В шелле в каталоге autoupdate запустите python getselfupdate.py, скачаются словари (около 100мб для русской и английской версий указанных софтин). Если у вас cabextract установлена, то они распакуются и будет файлик providers.txt. Если cabextract установить забыли, то удалите *.cab из корня, установите cabextract и повторите python getselfupdate.py.
Теперь надо скачать сами апдейты - в шелле в каталоге autoupdate запустите python sus_sync.py - начнут качаться все апдейты для указанных систем и языков, это замет несколько дней (если у вас не 10мбит канал, конечно). Я лично в sus_sync.py и getselfupdate.py нашел строчку запуска wget и поставил лимит скорости скачивания. Я ПРЕДУПРЕДИЛ - КАЧАТЬСЯ БУДЕТ ОЧЕНЬ МНОГО!!! ДО 10 ГБ. Практика показывает, что на сегодняшний день выкачивается по w2k+wxp+w2003 en+ru до 2х гигабайт.
Использование
Для использования системы необходимо поправить файл winupdate.reg, входящий в поставку SUSfL, выставить там ваш адрес сервера обновления, и ваше время обновления. Далее на всех машинах, которые должны будут обновляться с сервера, заносим этот файл в реестр и проверяем, чтобы служба Automatic Updates была запущена
Автор: Cyrill Malevanov (cyrill at malevanov.spb.ru)