Aleksey
Кандидат
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
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #1 : 30 Декабря 2005, 09:22 » |
|
Штука полезная. А что обновляется: инсталляция или уже поставленный ООо? Или совсем круто - распаковка CAB (или RPM), обновление, сборка?
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
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
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #3 : 30 Декабря 2005, 10:45 » |
|
Отлично, только в скрипте нужна проверка идентичности файлов по контрольным суммам (желательно SHA-256, но сойдет и MD5). Стабильность ООо - штука тонкая и призрачная, поэтому необходимо, чтобы на процесс обновления не падало никаких подозрений 
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #4 : 30 Декабря 2005, 11:14 » |
|
проверка идентичности файлов по контрольным суммам (желательно SHA-256, но сойдет и MD5) Я уже думал об этом. Будет проверка контрольной суммы полученного дистрибутива (но скорее всего будет MD5, т.к. есть портированная утилита md5sum, но на первый раз, я думаю, пойдет). Правда пока в моем варианте такой проверки нет. 
|
|
|
|
|
Записан
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #5 : 30 Декабря 2005, 11:26 » |
|
Будет проверка контрольной суммы полученного дистрибутива И еще для каждого файла в процессе сборки - для гарантии. Не уверен, что CABARC обеспечит побитную тождественность файлов. Скорее всего, как обычный архиватор, воткнет дату/время - и контрольная сумма будет совсем другой Правда пока в моем варианте такой проверки нет. Это поправимо 
|
|
|
|
|
Записан
|
|
|
|
|
questor
|
 |
« Ответ #6 : 30 Декабря 2005, 11:34 » |
|
На чем скрипт будет написан? Желательно бы на bash (под cygwin) сразу писать - я тогда могу принять участие в написании кода. И кроссплатформенность сохраним.
|
|
|
|
|
Записан
|
Надо делать так, как надо. А как не надо - делать не надо.
|
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #8 : 30 Декабря 2005, 11:53 » |
|
Очень хорошее замечание! Видимо придется сделать что-то посложнее. Например, tar cv . | md5sum Ну, и конечно лучше отсортировать файлы в начале по имени (для большей гарантии). Просто не хочется хранить все суммы, т.к. число файлов в дистрибутиве очень большое. Не хочется увеличивать размер патча. Проект пишется обычной cmd.exe с помощью bat-файлов. Я не стал привязываться к cygwin, т.к. тогда пользователю требуется установить и эту среду. Но, bat-ники только запускают соответствующие программы - в них почти отсутствует какая-либо логика, а т.к. все утилиты мультиплатформенные, то переписывание будет делом не сложным. P.S.: В конце я выложу не только патч, но и средства его получения (автоматизированные), поэтому дальнейшая генерация патчей не будет большой проблемой.
|
|
|
|
|
Записан
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #9 : 30 Декабря 2005, 12:07 » |
|
Ну, и конечно лучше отсортировать файлы в начале по имени (для большей гарантии). А сортировать-то зачем? Просто не хочется хранить все суммы, т.к. число файлов в дистрибутиве очень большое. Не хочется увеличивать размер патча. 1. слить все файлы до упаковки в tarball, и посчитать его КС или даже не tarball (т.к. timestamps), а просто последовательно вычислять КС файлов без сброса состояния КС2. хранить КС только важных файлов (бинарники, *.rdb) Я за 1 вариант, т.к. получается всего 4 суммы - по одной для каждого CAB. Проект пишется обычной cmd.exe с помощью bat-файлов. Перепишем.
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #10 : 30 Декабря 2005, 12:27 » |
|
А сортировать-то зачем? Вообще нет никакой гарантии, что файлы будут добавляться в архив именно в той последовательности в какой они добавляются, например, у меня. Именно поэтому и нужна сортировка. У cab-файла может не совпасть контрольная сумма, т.к. на нее будет влиять время создания файлов в этом архиве, как вы правильно заметили. Поэтому скорее всего перед упаковкой будет изменяться время создания всех файлов на одну фиксированную дату. Скорее всего это будет гарантировать идентичность получаемой md5-суммы cab-файла.
|
|
|
|
|
Записан
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #11 : 30 Декабря 2005, 12:44 » |
|
Вообще нет никакой гарантии, что файлы будут добавляться в архив именно в той последовательности в какой они добавляются, например, у меня. Именно поэтому и нужна сортировка. Согласен. У cab-файла может не совпасть контрольная сумма, т.к. на нее будет влиять время создания файлов в этом архиве, как вы правильно заметили. Поэтому скорее всего перед упаковкой будет изменяться время создания всех файлов на одну фиксированную дату. Сброс даты проблему не решит, т.к. в существующих файлах уже стоит какая-то дата, и менять ее нельзя (да и не нужно). Лучше все-таки создать временный файл и туда с помощью последовательных append дописать все файлы. И посчитать его КС.
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #12 : 30 Декабря 2005, 12:57 » |
|
Лучше все-таки создать временный файл и туда с помощью последовательных append дописать все файлы. Нашел еще один вариант. Вроде бы работает: tar cv . | tar xvmO * | md5sum Ну и еще перед этим сортировку.
|
|
|
|
|
Записан
|
|
|
|
|
rail
|
 |
« Ответ #13 : 30 Декабря 2005, 13:05 » |
|
Очень даже отлично! Было бы неплохо иметь такую систему обновлений. Думаю, совместными усилиями это можно будет отточить до идеала 
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #14 : 30 Декабря 2005, 13:09 » |
|
Вообщем я пойду. После праздников предоставлю все необходимые материалы. Так, что запасайтесь терпением.
Поздравляю всех с наступающим новым годом!
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
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
Сообщений: 73
|
 |
« Ответ #16 : 5 Января 2006, 09:29 » |
|
Забыл сказать, что это обновление дистрибутива от Инфра Ресурс с версии 2.0.0 до версии 2.0.1.
|
|
|
|
|
Записан
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #17 : 5 Января 2006, 11:04 » |
|
Как доберусь до быстрого инета обязательно скачаю и проверю.
ЗЫ тему пора переносить в раздел Setup
|
|
|
|
|
Записан
|
|
|
|
Kir
Offline
Сообщений: 14
|
 |
« Ответ #18 : 5 Января 2006, 11:37 » |
|
скачал запустил получил пустой каталог distrib\ где собака порылась?
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #19 : 5 Января 2006, 20:05 » |
|
Сегодня попеределываю скрипты, чтобы ввести более вменяемое протоколирование действий в log-файл. Это потребует некоторого времени, но через пару дней будет готово. Далее - скачаный патч, это по большей части файлы исправлений, а потому их не надо закачивать повторно, если я что-то изменю в скриптах, то достаточно будет закачать дополнительно от 10 до 300 Кб, так, что, на всякий пожарный, не переживайте по поводу скачанных 24 Мб - они вам еще пригодятся.
Для данного случая у меня два объяснения: 1) Я что-то не доглядел на счет 7-zip - прийду домой и попробую проэмулировать чистый компьютер. 2) У вас дистрибутив лежит не там, где я написал или дистрибутив не тот (д.б. от Инфра Ресурс 2.0.0)
В любом случае было бы не плохо если бы еще проверило пара человек, чтобы знать наверняка. Как я уже говорил, не переживайте - эти 25 Мб не прийдется перекачивать.
|
|
|
|
|
Записан
|
|
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #21 : 8 Января 2006, 19:24 » |
|
1) Я что-то не доглядел на счет 7-zip - прийду домой и попробую проэмулировать чистый компьютер. 7-zip пока не умеет работать с абсолютными путями, т.е. C:\path\to\file.ext ему указать нельзя.
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
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Кто-нибудь еще пробовал работу патча? А то статистика какая-то грустная. 
|
|
|
|
|
Записан
|
|
|
|
|
rail
|
 |
« Ответ #23 : 9 Января 2006, 01:35 » |
|
To AllКто-нибудь еще пробовал работу патча? А то статистика какая-то грустная.  Вот завтра до винды доберусь  , сразу и попробую.
|
|
|
|
|
Записан
|
|
|
|
Mike
Global Moderator
Гуру
   
Offline
Пол: 
Сообщений: 7640
Откуда: Волгоград
|
 |
« Ответ #24 : 10 Января 2006, 10:19 » |
|
Проверил, работает. Замечания: 1. файлы контрольных сумм лучше не стирать 2. для CABARC надо параметры подобрать, а то жмет плохо (108Mb (оригинальная инфровская сборка) -> 115Mb)
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #25 : 10 Января 2006, 10:26 » |
|
файлы контрольных сумм лучше не стирать
Их можно извлечь из самого патча. Благо название md5.7z о чем-то должно говорить. Просто не знаю зачем это может понадобится. для CABARC надо параметры подобрать, а то жмет плохо (108Mb (оригинальная инфровская сборка) -> 115Mb
Тоже заметил. В следующей версии увеличу степень сжатия. Может даже будет получаться меньше, чем у Инфра. Но можете для теста в файле patch1.bat поменять LZX:15 на LZX:21 Добавлено: с LZX:21 получилось 108,219,102
|
|
|
|
|
Записан
|
|
|
|
|
rail
|
 |
« Ответ #26 : 11 Января 2006, 16:27 » |
|
Вроде получилось...
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #27 : 12 Января 2006, 06:26 » |
|
Скоро выложу набор для изготовления таких патчей. Я надеюсь, что на этом сайте будут выкладываться и патчи, чтобы качать в случае обновления поменьше.
|
|
|
|
|
Записан
|
|
|
|
|
rail
|
 |
« Ответ #28 : 12 Января 2006, 11:15 » |
|
Надо будет правда им еще придать "товарный" вид. Может быть все это упаковать в NSIS (вместе с запуском patcher)?
|
|
|
|
|
Записан
|
|
|
|
Aleksey
Кандидат
Offline
Сообщений: 73
|
 |
« Ответ #29 : 12 Января 2006, 11:55 » |
|
Надо будет правда им еще придать "товарный" вид. Может быть все это упаковать в NSIS (вместе с запуском patcher)? Посмотрю этот инсталятор на досуге. Может, что получится. Хотя я пока с трудом представляю, как это будет все в конечном счете выглядеть. Ведь там необходимо распаковать кучу файлов, потом патчить и т.д. и т.п. А ведь еще есть логи. Но попробовать можно.
|
|
|
|
|
Записан
|
|
|
|
|