ОС Linux -> Программное обеспечение
->Установка локального WindowsUpdate сервера под Unix
Установка локального WindowsUpdate сервера под Unix
В статье рассматривается установка сервера, совместимого с MS WindowsTM Software Update Service. Заранее предполагается, что уже установлены веб-сервер Apache 1.3.x и Python 2.x. 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" от Владимира Умнова В файле autoupdatesus_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 stored
localCabPool = "/mnt/www/winupdate.mydomain.ru/data/selfupdate/"
#UseWUServer = [True|False] if set to True all updates will be downloadedfrom local
UseWUServer = False
и указываем, какие продукты и каких версий нам нужны: #sus_update_locales = None
sus_update_locales = {
"ie55x": ('en','ru'),
"ie60x": ('en','ru'),
"netserver": ('en','ru'),
"win2k": ('en','ru'),
"winxp": ('en','ru')
}
NetServer - это Win2003 Server. Не забываем сделать chmod a+x autoupdate/getmanifest.asp и проверить в нем шебанг (!#/usr/local/bin/python или ваш путь к python). Потом надо установить, а что же качать-то. Первыми с сайта любимой компании качаются так называемые словари. Список словарей лежит в autoupdateselfupdate.txt. Удаляем из него лишние строчки - например, те, которые содержат неиспользуемые в нашей сети языки. Будьте внимательны и аккуратны. Рекомендуется добавить туда строчки: selfupdate/AU/x86/XP/en/wuaueng.cab
selfupdate/AU/x86/XP/en/wuaucomp.cab
selfupdate/AU/x86/XP/en/iuengine.cab
selfupdate/AU/x86/XP/en/wuauclt.cab
selfupdate/AU/x86/XP/en/iuctl.cab
selfupdate/AU/x86/XP/ru/wuaueng.cab
selfupdate/AU/x86/XP/ru/wuaucomp.cab
selfupdate/AU/x86/XP/ru/iuengine.cab
selfupdate/AU/x86/XP/ru/wuauclt.cab
selfupdate/AU/x86/XP/ru/iuctl.cab
selfupdate/AU/x86/XP/mui/wuauclt_ptbr.cab
selfupdate/AU/x86/XP/mui/wuauclt_zhcn.cab
selfupdate/AU/x86/XP/mui/wuaueng_ar.cab
selfupdate/AU/x86/XP/mui/wuaueng_da.cab
selfupdate/AU/x86/XP/mui/wuaueng_de.cab
selfupdate/AU/x86/XP/mui/wuaueng_cs.cab
selfupdate/AU/x86/XP/mui/wuaueng_el.cab
selfupdate/AU/x86/XP/mui/wuaueng_es.cab
selfupdate/AU/x86/XP/mui/wuaueng_fi.cab
selfupdate/AU/x86/XP/mui/wuaueng_fr.cab
selfupdate/AU/x86/XP/mui/wuaueng_he.cab
selfupdate/AU/x86/XP/mui/wuaueng_hu.cab
selfupdate/AU/x86/XP/mui/wuaueng_ja.cab
selfupdate/AU/x86/XP/mui/wuaueng_it.cab
selfupdate/AU/x86/XP/mui/wuaueng_ko.cab
selfupdate/AU/x86/XP/mui/wuaueng_ptbr.cab
selfupdate/AU/x86/XP/mui/wuaueng_nl.cab
selfupdate/AU/x86/XP/mui/wuaueng_no.cab
selfupdate/AU/x86/XP/mui/wuaueng_pl.cab
selfupdate/AU/x86/XP/mui/wuaueng_pt.cab
selfupdate/AU/x86/XP/mui/wuauclt_ar.cab
selfupdate/AU/x86/XP/mui/wuaueng_ru.cab
selfupdate/AU/x86/XP/mui/wuauclt_zhtw.cab
selfupdate/AU/x86/XP/mui/wuaueng_sv.cab
selfupdate/AU/x86/XP/mui/wuauclt_da.cab
selfupdate/AU/x86/XP/mui/wuaueng_tr.cab
selfupdate/AU/x86/XP/mui/wuauclt_de.cab
selfupdate/AU/x86/XP/mui/wuauclt_cs.cab
selfupdate/AU/x86/XP/mui/wuauclt_el.cab
selfupdate/AU/x86/XP/mui/wuauclt_es.cab
selfupdate/AU/x86/XP/mui/wuauclt_fi.cab
selfupdate/AU/x86/XP/mui/wuauclt_fr.cab
selfupdate/AU/x86/XP/mui/wuauclt_he.cab
selfupdate/AU/x86/XP/mui/wuauclt_hu.cab
selfupdate/AU/x86/XP/mui/wuauclt_ja.cab
selfupdate/AU/x86/XP/mui/wuauclt_it.cab
selfupdate/AU/x86/XP/mui/wuauclt_ko.cab
selfupdate/AU/x86/XP/mui/wuaueng_zhcn.cab
selfupdate/AU/x86/XP/mui/wuauclt_nl.cab
selfupdate/AU/x86/XP/mui/wuauclt_no.cab
selfupdate/AU/x86/XP/mui/wuauclt_pl.cab
selfupdate/AU/x86/XP/mui/wuauclt_pt.cab
selfupdate/AU/x86/XP/mui/wuauclt_ru.cab
selfupdate/AU/x86/XP/mui/wuauclt_sv.cab
selfupdate/AU/x86/XP/mui/wuauclt_tr.cab
selfupdate/AU/x86/XP/mui/wuaueng_zhtw.cab
selfupdate/AU/x86/W2K/en/wuaueng.cab
selfupdate/AU/x86/W2K/en/wuaucomp.cab
selfupdate/AU/x86/W2K/en/iuengine.cab
selfupdate/AU/x86/W2K/en/wuauclt.cab
selfupdate/AU/x86/W2K/en/wuaucpl.cab
selfupdate/AU/x86/W2K/en/iuctl.cab
selfupdate/AU/x86/W2K/ru/wuaueng.cab
selfupdate/AU/x86/W2K/ru/wuaucomp.cab
selfupdate/AU/x86/W2K/ru/iuengine.cab
selfupdate/AU/x86/W2K/ru/wuauclt.cab
selfupdate/AU/x86/W2K/ru/wuaucpl.cab
selfupdate/AU/x86/W2K/ru/iuctl.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_ar.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_zhcn.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_da.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_de.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_cs.cab
selfupdate/AU/x86/W2K/mui/wuauclt_ptbr.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_el.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_es.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_fi.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_fr.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_he.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_hu.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_ja.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_it.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_ko.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_nl.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_no.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_pl.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_pt.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_ru.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_sv.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_zhtw.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_tr.cab
selfupdate/AU/x86/W2K/mui/wuauclt_zhcn.cab
selfupdate/AU/x86/W2K/mui/wuaueng_ar.cab
selfupdate/AU/x86/W2K/mui/wuaueng_da.cab
selfupdate/AU/x86/W2K/mui/wuaueng_de.cab
selfupdate/AU/x86/W2K/mui/wuaueng_cs.cab
selfupdate/AU/x86/W2K/mui/wuaueng_el.cab
selfupdate/AU/x86/W2K/mui/wuaueng_es.cab
selfupdate/AU/x86/W2K/mui/wuaueng_fi.cab
selfupdate/AU/x86/W2K/mui/wuaueng_fr.cab
selfupdate/AU/x86/W2K/mui/wuaueng_he.cab
selfupdate/AU/x86/W2K/mui/wuaueng_hu.cab
selfupdate/AU/x86/W2K/mui/wuaueng_ja.cab
selfupdate/AU/x86/W2K/mui/wuaueng_it.cab
selfupdate/AU/x86/W2K/mui/wuaueng_ko.cab
selfupdate/AU/x86/W2K/mui/wuaueng_ptbr.cab
selfupdate/AU/x86/W2K/mui/wuaueng_nl.cab
selfupdate/AU/x86/W2K/mui/wuaueng_no.cab
selfupdate/AU/x86/W2K/mui/wuaueng_pl.cab
selfupdate/AU/x86/W2K/mui/wuaueng_pt.cab
selfupdate/AU/x86/W2K/mui/wuauclt_ar.cab
selfupdate/AU/x86/W2K/mui/wuaueng_ru.cab
selfupdate/AU/x86/W2K/mui/wuauclt_zhtw.cab
selfupdate/AU/x86/W2K/mui/wuaueng_sv.cab
selfupdate/AU/x86/W2K/mui/wuauclt_da.cab
selfupdate/AU/x86/W2K/mui/wuaueng_tr.cab
selfupdate/AU/x86/W2K/mui/wuauclt_de.cab
selfupdate/AU/x86/W2K/mui/wuauclt_cs.cab
selfupdate/AU/x86/W2K/mui/wuauclt_el.cab
selfupdate/AU/x86/W2K/mui/wuauclt_es.cab
selfupdate/AU/x86/W2K/mui/wuauclt_fi.cab
selfupdate/AU/x86/W2K/mui/wuauclt_fr.cab
selfupdate/AU/x86/W2K/mui/wuauclt_he.cab
selfupdate/AU/x86/W2K/mui/wuauclt_hu.cab
selfupdate/AU/x86/W2K/mui/wuauclt_ja.cab
selfupdate/AU/x86/W2K/mui/wuauclt_it.cab
selfupdate/AU/x86/W2K/mui/wuauclt_ko.cab
selfupdate/AU/x86/W2K/mui/wuaueng_zhcn.cab
selfupdate/AU/x86/W2K/mui/wuauclt_nl.cab
selfupdate/AU/x86/W2K/mui/wuauclt_no.cab
selfupdate/AU/x86/W2K/mui/wuauclt_pl.cab
selfupdate/AU/x86/W2K/mui/wuauclt_pt.cab
selfupdate/AU/x86/W2K/mui/wuauclt_ru.cab
selfupdate/AU/x86/W2K/mui/wuauclt_sv.cab
selfupdate/AU/x86/W2K/mui/wuauclt_tr.cab
selfupdate/AU/x86/W2K/mui/wuaucpl_ptbr.cab
selfupdate/AU/x86/W2K/mui/wuaueng_zhtw.cab
selfupdate/AU/x86/NetServer/en/wuaueng.cab
selfupdate/AU/x86/NetServer/en/wuaucomp.cab
selfupdate/AU/x86/NetServer/en/iuengine.cab
selfupdate/AU/x86/NetServer/en/wuauclt.cab
selfupdate/AU/x86/NetServer/en/iuctl.cab
selfupdate/AU/x86/NetServer/ru/wuaueng.cab
selfupdate/AU/x86/NetServer/ru/wuaucomp.cab
selfupdate/AU/x86/NetServer/ru/iuengine.cab
selfupdate/AU/x86/NetServer/ru/wuauclt.cab
selfupdate/AU/x86/NetServer/ru/iuctl.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_ptbr.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_zhcn.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_ar.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_da.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_de.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_cs.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_el.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_es.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_fi.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_fr.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_he.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_hu.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_ja.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_it.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_ko.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_ptbr.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_nl.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_no.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_pl.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_pt.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_ar.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_ru.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_zhtw.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_sv.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_da.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_tr.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_de.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_cs.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_el.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_es.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_fi.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_fr.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_he.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_hu.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_ja.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_it.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_ko.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_zhcn.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_nl.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_no.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_pl.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_pt.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_ru.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_sv.cab
selfupdate/AU/x86/NetServer/mui/wuauclt_tr.cab
selfupdate/AU/x86/NetServer/mui/wuaueng_zhtw.cab
selfupdate/CUN5_4/x86/nt5/en/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/en/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/ru/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/ru/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/engb/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/engb/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/enie/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/enie/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/ennz/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/ennz/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/enza/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/enza/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/en_thai/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/en_thai/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/el_ibm/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/el_ibm/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/en_arabic/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/en_arabic/ie5/wuv3is.cab
selfupdate/CUN5_4/x86/nt5/en_hebrew/ie5/actproto.cab
selfupdate/CUN5_4/x86/nt5/en_hebrew/ie5/wuv3is.cab
selfupdate/CUN5_4/selfupd/ResKit/x86/en/cun.CAB
selfupdate/CUN5_4/selfupd/ResKit/x86/en/wulproto.CAB
selfupdate/CUN5_4/selfupd/ResKit/x86/en/cunprot2.CAB
selfupdate/CUN5_4/selfupd/ResKit/x86/ru/wulproto.CAB
selfupdate/CUN5_4/selfupd/ResKit/x86/ru/cunprot2.CAB
selfupdate/CUN5_4/selfupd.cab
selfupdate/AU/x86/XP/ru/wuauclt1.cab
selfupdate/AU/x86/XP/en/wuauclt1.cab
selfupdate/AU/x86/XP/mui/wuauclt1_ru.cab
selfupdate/AU/x86/XP/ru/wuapi.cab
selfupdate/AU/x86/XP/ru/wups.cab
selfupdate/AU/x86/W2K/ru/wuaucpl.cab
selfupdate/wuident.cab
Первый запускВ шелле в каталоге 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 была запущена Поддержка и докачкаИногда проверяйте error.log на предмет ненайденных cab-файлов. Их добавляйте в autoupdate/selfupdate.txt, удалите cab-файлы в корне сервера, потом запускайте getselfupdate.py и sus_sync.py. Для проведения синхронизации с сервером обновлений любимой компании также запускайте sus_sync.py. Статья взята с сайта OpenNet.
комментарии к статье (0)
Ссылки по теме:
SysRq: Убийца процессов
Linux и питание от батарей
Настройка связки Apache2 и Tomcat5
Адресная книга на LDAP за пять минут
Cooperative Linux в Windows
|