О компании  |  Продукты  |  Услуги  |  Партнёрам  |  Купить  |  Скачать  |  Форум 
20 Марта 2010, 03:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Об участниках, правила форума, правила сообщений об ошибках, FAQ, шаблон для сообщений об ошибках
 
   Начало   Помощь Поиск Календарь Войти Регистрация  
Страниц: [1] 2 3 ... 10
  Печать  
Автор Тема: Система бинарных обновлений  (Прочитано 138115 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« : 30 Декабря 2005, 06:58 »

В данный момент проводил испытания скриптовой системы для бинарных обновлений дистрибутива OpenOffice.org. После праздников планирую выпустить набор скриптов для получения из дистрибутива OOo_2.0_windows_install_ru_infra.zip дистрибутива OOo_2.0.1_windows_install_infra_ru.zip. Приблизительный объем обновления равен 25Мб. Так, что можно сэкономить на трафике.
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #1 : 30 Декабря 2005, 09:22 »

Штука полезная. А что обновляется: инсталляция или уже поставленный ООо? Или совсем круто - распаковка CAB (или RPM), обновление, сборка?
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #2 : 30 Декабря 2005, 10:17 »

Цитировать
Или совсем круто - распаковка CAB (или RPM), обновление, сборка?


К сожалению, в данный момент я сделал только обновление дистрибутива для платформы Windows. Хотя большая часть используемых инструментов мультиплатформенная. А в остальном именно так как вы и сказали.
Общая технология обновления - копируете скрипты в каталог с распакованным из zip-архива дистрибутивом, запускает их и на выходе получаете дистрибутив со следующей версией программы. В принципе все будет полностью готово через несколько дней, но доступ к Инет я смогу получить только дней через десять (после праздников). В принципе ничего не мешает сделать на такой же основе обновление RPM (но я не очень знаком с Linux).
При построении используются следующие инструменты:
7z - для упаковки патчей
jdiffl - для изготовления бинарных патчей
CABARC.EXE - не мультиплатформенный, но он нужен только для упаковки в cab-файлы для Windows-платформы.
diff - для сравнения файлов
gawk - анализ логов
Так, что можно попробовать замутить то же самое и для RPM пакетов, если у кого есть такая возможность, соответствующие навыки и время. Всю необходимую информацию я предоставлю.
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #3 : 30 Декабря 2005, 10:45 »

Отлично, только в скрипте нужна проверка идентичности файлов по контрольным суммам (желательно SHA-256, но сойдет и MD5). Стабильность ООо - штука тонкая и призрачная, поэтому необходимо, чтобы на процесс обновления не падало никаких подозрений Cool
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #4 : 30 Декабря 2005, 11:14 »

Цитировать
проверка идентичности файлов по контрольным суммам (желательно SHA-256, но сойдет и MD5)

Я уже думал об этом. Будет проверка контрольной суммы полученного дистрибутива (но скорее всего будет MD5, т.к. есть портированная утилита md5sum, но на первый раз, я думаю, пойдет). Правда пока в моем варианте такой проверки нет. Embarassed
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #5 : 30 Декабря 2005, 11:26 »

Цитата: Aleksey
Будет проверка контрольной суммы полученного дистрибутива

И еще для каждого файла в процессе сборки - для гарантии. Не уверен, что CABARC обеспечит побитную тождественность файлов. Скорее всего, как обычный архиватор, воткнет дату/время - и контрольная сумма будет совсем другой Wink
Цитата: Aleksey
Правда пока в моем варианте такой проверки нет.

Это поправимо Very Happy
Записан

questor
Global Moderator
Эксперт
*****
Offline Offline

Пол: Мужской
Сообщений: 791

Откуда: Москва


WWW
« Ответ #6 : 30 Декабря 2005, 11:34 »

На чем скрипт будет написан? Желательно бы на bash (под cygwin) сразу писать - я тогда могу принять участие в написании кода. И кроссплатформенность сохраним.
Записан

Надо делать так, как надо. А как не надо - делать не надо.
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #7 : 30 Декабря 2005, 11:44 »

Цитата: questor
Желательно бы на bash (под cygwin)

Маленький hint: под Win32 bash (ну, по крайней мере sh) поддерживается с помощью MSYS.
 Arrow http://www.mingw.org/msys.shtml - информация
 Arrow http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download - скачать
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #8 : 30 Декабря 2005, 11:53 »

Очень хорошее замечание! Видимо придется сделать что-то посложнее. Например,
Код:
tar cv . | md5sum

Ну, и конечно лучше отсортировать файлы в начале по имени (для большей гарантии).

Просто не хочется хранить все суммы, т.к. число файлов в дистрибутиве очень большое. Не хочется увеличивать размер патча.

Проект пишется обычной cmd.exe с помощью bat-файлов. Я не стал привязываться к cygwin, т.к. тогда пользователю требуется установить и эту среду. Но, bat-ники только запускают соответствующие программы - в них почти отсутствует какая-либо логика, а т.к. все утилиты мультиплатформенные, то переписывание будет делом не сложным.

P.S.: В конце я выложу не только патч, но и средства его получения (автоматизированные), поэтому дальнейшая генерация патчей не будет большой проблемой.
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #9 : 30 Декабря 2005, 12:07 »

Цитата: Aleksey
Ну, и конечно лучше отсортировать файлы в начале по имени (для большей гарантии).

А сортировать-то зачем?

Цитата: Aleksey
Просто не хочется хранить все суммы, т.к. число файлов в дистрибутиве очень большое. Не хочется увеличивать размер патча.

1. слить все файлы до упаковки в tarball, и посчитать его КС
или даже не tarball (т.к. timestamps), а просто последовательно вычислять КС файлов без сброса состояния КС
2. хранить КС только важных файлов (бинарники, *.rdb)
Я за 1 вариант, т.к. получается всего 4 суммы - по одной для каждого CAB.

Цитата: Aleksey
Проект пишется обычной cmd.exe с помощью bat-файлов.

Перепишем.
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #10 : 30 Декабря 2005, 12:27 »

Цитировать
А сортировать-то зачем?

Вообще нет никакой гарантии, что файлы будут добавляться в архив именно в той последовательности в какой они добавляются, например, у меня. Именно поэтому и нужна сортировка.

У cab-файла может не совпасть контрольная сумма, т.к. на нее будет влиять время создания файлов в этом архиве, как вы правильно заметили. Поэтому скорее всего перед упаковкой будет изменяться время создания всех файлов на одну фиксированную дату. Скорее всего это будет гарантировать идентичность получаемой md5-суммы cab-файла.
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #11 : 30 Декабря 2005, 12:44 »

Цитата: Aleksey
Вообще нет никакой гарантии, что файлы будут добавляться в архив именно в той последовательности в какой они добавляются, например, у меня. Именно поэтому и нужна сортировка.

Согласен.

Цитата: Aleksey
У cab-файла может не совпасть контрольная сумма, т.к. на нее будет влиять время создания файлов в этом архиве, как вы правильно заметили. Поэтому скорее всего перед упаковкой будет изменяться время создания всех файлов на одну фиксированную дату.

Сброс даты проблему не решит, т.к. в существующих файлах уже стоит какая-то дата, и менять ее нельзя (да и не нужно). Лучше все-таки создать временный файл и туда с помощью последовательных append дописать все файлы. И посчитать его КС.
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #12 : 30 Декабря 2005, 12:57 »

Цитировать
Лучше все-таки создать временный файл и туда с помощью последовательных append дописать все файлы.


Нашел еще один вариант. Вроде бы работает:
Код:
tar cv . | tar xvmO * | md5sum


Ну и еще перед этим сортировку.
Записан
rail
Administrator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 4121

Откуда: Москва


WWW
« Ответ #13 : 30 Декабря 2005, 13:05 »

Очень даже отлично! Было бы неплохо иметь такую систему обновлений. Думаю, совместными усилиями это можно будет отточить до идеала Smile
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #14 : 30 Декабря 2005, 13:09 »

Вообщем я пойду. После праздников предоставлю все необходимые материалы. Так, что запасайтесь терпением.

Поздравляю всех с наступающим новым годом!
Записан
Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #15 : 5 Января 2006, 08:29 »

Сделал бинарный патч. Можете начинать тестировать. Ссылка для скачивания:
http://rapidshare.de/files/10424403/patch_i_200_201.zip.html
или
http://www.upload2.net/download2/iTY2GmXdO8u9iw7/patch_i_200_201.zip.html
Размер: 24 406 258
MD5: 1f939a26a0803b8125124a404a775585

Код:

Метод использования
Для начала вам необходимы
 1) Дистрибутив Open Office v2.0.0 от Инфра Ресурс
 2) Данный патчер
 3) ~500 Mb свободного места на диске для размещения временных файлов

Так как дистрибутив от Инфра Ресурс обычно запакован в zip-архив, то
вам для начала надо его распаковать в отдельную папку. В нашем примере будем предполагать, что дистрибутив находится в папке Temp. Таким образом структура файлов в папке Temp имеет следующий вид:
 Temp\
   licenses\
   readmes\
   ruopenofficeorg1.cab
   ruopenofficeorg2.cab
   ruopenofficeorg3.cab
   ruopenofficeorg4.cab
   instmsia.exe
   instmsiw.exe
   setup.exe
   setup.ini
   ruopenofficeorg20.msi

Создайте внутри папки Temp подпапку Patcher и распакуйте туда содержимое архива с патчером. В результате должно получится что-то вроде следующего:
 Temp\
   licenses\
   patcher\
     data\
     Progs\
     patch1.bat
     patch2.bat
     patcher.bat
     reset.bat
     readme.txt
   readmes\
   ruopenofficeorg1.cab
   ruopenofficeorg2.cab
   ruopenofficeorg3.cab
   ruopenofficeorg4.cab
   instmsia.exe
   instmsiw.exe
   setup.exe
   setup.ini
   ruopenofficeorg20.msi

Запустите файл patcher.bat. После того как преобразование закончится вы получите каталог distrib в котором будет находится новый дистрибутив OOO. Время преобразования зависит от конфигурации копьютера.

На моей машине: AMD Sempron 2800+ / 192Mb / 60Gb - 7 минут


В архиве есть файл readme.txt в котором содержится информация, приведенная выше.

О результатах преобразования отписывайтесь здесь.
Записан
Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #16 : 5 Января 2006, 09:29 »

Забыл сказать, что это обновление дистрибутива от Инфра Ресурс с версии 2.0.0 до версии 2.0.1.
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #17 : 5 Января 2006, 11:04 »

Как доберусь до быстрого инета обязательно скачаю и проверю.

ЗЫ тему пора переносить в раздел Setup
Записан

Kir

Offline Offline

Сообщений: 14


« Ответ #18 : 5 Января 2006, 11:37 »

скачал запустил получил пустой каталог distrib\
где собака порылась?
Записан
Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #19 : 5 Января 2006, 20:05 »

Сегодня попеределываю скрипты, чтобы ввести более вменяемое протоколирование действий в log-файл. Это потребует некоторого времени, но через пару дней будет готово. Далее - скачаный патч, это по большей части файлы исправлений, а потому их не надо закачивать повторно, если я что-то изменю в скриптах, то достаточно будет закачать дополнительно от 10 до 300 Кб, так, что, на всякий пожарный, не переживайте по поводу скачанных 24 Мб - они вам еще пригодятся.

Для данного случая у меня два объяснения:
1) Я что-то не доглядел на счет 7-zip - прийду домой и попробую проэмулировать чистый компьютер.
2) У вас дистрибутив лежит не там, где я написал или дистрибутив не тот (д.б. от Инфра Ресурс 2.0.0)

В любом случае было бы не плохо если бы еще проверило пара человек, чтобы знать наверняка. Как я уже говорил, не переживайте - эти 25 Мб не прийдется перекачивать.
Записан
Arioch
Мастер
**
Offline Offline

Сообщений: 201


« Ответ #20 : 6 Января 2006, 23:28 »

cross-platform patcher is called RSync.
It can be integrated into installation package, i guess.
But how to use it i don't know.

http://www.freesource.info/wiki/TZ/RazrabotkaNuzhnyxProgramm/SmartRsync
http://www.freesource.info/wiki/Windows/Rsync

One more tool, Linux-only: http://wiki.sisyphus.ru/xdelta
Записан
Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #21 : 8 Января 2006, 19:24 »

Цитата: Aleksey
1) Я что-то не доглядел на счет 7-zip - прийду домой и попробую проэмулировать чистый компьютер.

7-zip пока не умеет работать с абсолютными путями, т.е.
Код:
C:\path\to\file.ext
ему указать нельзя.
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #22 : 8 Января 2006, 20:20 »

To Kir
Я сделал новую версию скриптов с отладочной информацией. Они находятся по ссылке http://rapidshare.de/files/10658589/patcher_v2.zip.html
Замените содержимым архива соответствующие файлы в каталоге patcher. Теперь есть режим отладки, поэтому вы можете выяснить где происходит ошибка и сообщить об этом мне. Вес: 240 Кб
Добавлено: о дополнительных отладочных возможностях скриптов можно почитать в файле readme.txt, который находится в архиве.

To Arioch
Я в курсе про эти инструменты, но они созданы немного для другого. Есть порт xdelta под Windows, но у него патчи получаются бо'льшего размера, да и он сам не маленький, поэтому я и не стал его использовать.

To Mike
Я знаю про это ограничение 7zip или Вы говорите про что-то конкретное. Дело в том, что абсолютные пути у меня, насколько помню, нигде не используются.

To All
Кто-нибудь еще пробовал работу патча? А то статистика какая-то грустная. Sad
Записан
rail
Administrator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 4121

Откуда: Москва


WWW
« Ответ #23 : 9 Января 2006, 01:35 »

Цитата: Aleksey

To All
Кто-нибудь еще пробовал работу патча? А то статистика какая-то грустная. Sad

Вот завтра до винды доберусь Smile, сразу и  попробую.
Записан

Mike
Global Moderator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 7640

Откуда: Волгоград


« Ответ #24 : 10 Января 2006, 10:19 »

Проверил, работает. Замечания:
1. файлы контрольных сумм лучше не стирать
2. для CABARC надо параметры подобрать, а то жмет плохо (108Mb (оригинальная инфровская сборка) -> 115Mb)
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #25 : 10 Января 2006, 10:26 »

Цитировать

файлы контрольных сумм лучше не стирать

Их можно извлечь из самого патча. Благо название md5.7z о чем-то должно говорить. Просто не знаю зачем это может понадобится.

Цитировать

для CABARC надо параметры подобрать, а то жмет плохо (108Mb (оригинальная инфровская сборка) -> 115Mb

Тоже заметил. В следующей версии увеличу степень сжатия. Может даже будет получаться меньше, чем у Инфра. Но можете для теста в файле patch1.bat поменять LZX:15 на LZX:21
Добавлено: с LZX:21 получилось 108,219,102
Записан
rail
Administrator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 4121

Откуда: Москва


WWW
« Ответ #26 : 11 Января 2006, 16:27 »

Вроде получилось...
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #27 : 12 Января 2006, 06:26 »

Скоро выложу набор для изготовления таких патчей. Я надеюсь, что на этом сайте будут выкладываться и патчи, чтобы качать в случае обновления поменьше.
Записан
rail
Administrator
Гуру
*****
Offline Offline

Пол: Мужской
Сообщений: 4121

Откуда: Москва


WWW
« Ответ #28 : 12 Января 2006, 11:15 »

Надо будет правда им еще придать "товарный" вид. Может быть все это упаковать в NSIS (вместе с запуском patcher)?
Записан

Aleksey
Кандидат
*
Offline Offline

Сообщений: 73


« Ответ #29 : 12 Января 2006, 11:55 »

Цитировать
Надо будет правда им еще придать "товарный" вид. Может быть все это упаковать в NSIS (вместе с запуском patcher)?

Посмотрю этот инсталятор на досуге. Может, что получится. Хотя я пока с трудом представляю, как это будет все в конечном счете выглядеть. Ведь там необходимо распаковать кучу файлов, потом патчить и т.д. и т.п. А ведь еще есть логи. Но попробовать можно.
Записан
Страниц: [1] 2 3 ... 10
  Печать  
 
Перейти в:  

Copyright © 2002-2010 Infra Resource Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
Rambler's Top100