четверг, 28 мая 2009 г.

Создание локального сервера обновлений для Firefox

На форуме задали вопрос, как поднять локальный сервер обновлений для Firefox (документация у Mozilla есть, но почему то по ней ничего не получалось). Ради интереса я сегодня поднял у себя этот сервер обновлений и у меня всё получилось.
В наличии имелся сервер с Debian Lenny. На него был поставлен apache2 и libapache2-mod-php5

sudo apt-get install apache2
sudo apt-get install libapache2-mod-php5

В файле /etc/apache2/sites-available/default директива AllowOverride None была изменена на AllowOverride FileInfo
В каталоге /var/www был создан каталог /var/www/update/Firefox/3.0.10/win32/ru/release и туда положены файлы:

root@db-fw:/var/www/update/Firefox/3.0.10/win32/ru/release# ls -la
-rw-r--r-- 1 root root 2188005 2009-05-28 11:22 firefox-3.0.10-3.0.11.ru.win32.partial.mar
-rw-r--r-- 1 root root 10189913 2009-05-28 11:25 firefox-3.0.11.ru.win32.complete.mar
-rw-r--r-- 1 root root 59 2009-05-28 10:12 .htaccess
-rw-r--r-- 1 root root 658 2009-05-28 11:20 update
-rw-r--r-- 1 root root 650 2009-05-28 12:12 update.xml

Файлы firefox-3.0.10-3.0.11.ru.win32.partial.mar и firefox-3.0.11.ru.win32.complete.mar были взяты с ftp://ftp.mozilla.org/pub/mozilla.org/f … es/build1/
Файлы .htaccess и update были взяты с https://developer.mozilla.org/en/Settin … ate_server без изменений.

Потом был создан файл update.xml:

<?xml version="1.0"?>
<updates>
<update type="minor" version="3.0.11" extensionVersion="3.0.11" buildID="2009042316" detailsURL="http://192.168.0.1/ru/firefox/3.0.11/releasenotes/">
<patch type="complete" URL="http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/firefox-3.0.11.ru.win32.complete.mar" hashFunction="SHA1" hashValue="1a08be9c203da5fb20f632e970e23331bb21b995" size="10189913" />
<patch type="partial" URL="http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/firefox-3.0.10-3.0.11.ru.win32.partial.mar" hashFunction="SHA1" hashValue="67683707609194c20188459da2ecfe9853122de4" size="2188005" />
</update>
</updates>

Хэш функции были вычислены с помощью sha1sum.

Потом я открыл русский Firefox 3.0.10 для Windows и создал строковый параметр app.update.url.override со значением http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/update.xml и проверил наличие обновлений. Firefox успешно нашёл обновление для 3.0.11 и успешно его применил.

12 комментариев:

  1. Насколько я помню, при такой настройке fx будет ругаться - ему по умолчанию нужен httpS

    ОтветитьУдалить
  2. @Merlyel
    Нет, у меня не ругался. https конечно неплохо бы использовать, но для него нужен действительный SSL-сертификат, который стоит денег. А если использовать самоподписанный сертификат - вот тогда точно будет ругаться.

    ОтветитьУдалить
  3. Все сделано, все работает. НО. После того, как ФФ обновился, если ткнуть ему "проверить наличие обновлений" он опять находит то же самое обновление и предлагает установить его. И так по кругу. В чем может быть беда? Обновляюсь с версии 3.5.7 на версию 3.6 И как узнать BuildID?

    ОтветитьУдалить
  4. @Анонимный Создайте в about:config переменную app.update.log.all и установите её в true. Потом обновитесь с сервера Mozilla и посмотрите лог обновления, чтобы узнать адрес и содержание xml файла обновления.
    Ещё BuildID можно узнать через Nightly Testers Tools.

    ОтветитьУдалить
  5. Не совсем понятно где потом искать этот лог!? В корне папки, где установлен ФФ лежит install.log, но там нигде не проскакивает ссылка на xml файл.

    ОтветитьУдалить
  6. Вопрос решен. Нужно было указать version="3.6" и extensionVersion="3.5.7"

    ОтветитьУдалить
  7. а чем сжат файл .mar ?

    ОтветитьУдалить
  8. @Анонимный https://wiki.mozilla.org/Software_Update:MAR

    ОтветитьУдалить
  9. И где там сказано чем сделать файл .mar ?

    ОтветитьУдалить
  10. @Анонимный Там указана папка, где размещены исходники

    ОтветитьУдалить
  11. Я вижу что исходники. Но всё же там не сказано как создать сам файл.

    ОтветитьУдалить
  12. @Анонимный https://wiki.mozilla.org/Software_Update:HowToManuallyGenerateMARFiles

    ОтветитьУдалить