The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Быстрое обновление бинарных файлов с помощью xdelta (diff freebsd binary)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: diff, freebsd, binary,  (найти похожие документы)
From: Антон Карпов <postfix@sendmail.ru> Newsgroups: email Date: Mon, 19 Jan 2004 14:31:37 +0000 (UTC) Subject: Быстрое обновление бинарных файлов с помощью xdelta Недавно разработчики выпустили новую версию KDE, вышла новая mozilla, обновятся и порты, неужели снова скачивать 30 с лишним мегабайт исходных текстов браузера или новые пакеты исходных текстов оконного менеджера, чтобы обновить рабочую среду? Система портов предполагает именно такой подход. Но у вас в /usr/ports/distfiles/ уже есть все однажды скачанные пакеты от kde-3.1.4, уже есть mozilla-sources-1.5.tar.bz2, и то и другое весит весьма прилично, скачивать новые исходники либо долго (диалап), либо дорого (adsl, прочее). В конце концов, мы же не выкачиваем /usr/src заново, когда cvsup'ом накатываем систему до актуального состояния. Все ведь слышали про patch и diff. По счастью для бинарных файлов есть утилита, по функциональности аналогичная diff , называется xdelta. Ставим cd /usr/ports/misc/xdelta make install clean Качаем нужные .xdelta-файлы. Для примера, если обновляем KDE с 3.1.4 до 3.1.5, то они лежат на http://kde.oregonstate.edu/pub/kde/stable/3.1.5/src/ или других зеркалах. Полный пакет kdeartwork весит 13 мб, а его "бинарный diff" - всего 900 кб, почувствуйте разницу. Если обновляется другой пакет (mozilla, etc) то, возможно, придется поискать нужный xdelta-файл, не все разработчики пока приняли за правило облегчать жизнь пользователям ;-) Патчим. Для наложения патча достаточно запустить xdelta patch имя_файла.xdelta в каталоге, содержащем и патч, и оригинальный пакет. Xdelta сама применит патч к нужному файлу и создаст в том же каталоге новую версию пакета. Тут, правда, нужно быть внимательным, ибо патч может быть применен не к сжатой версии пакета, а к tar-файлу с исходниками. Как и есть в случае с KDE, т.е. вам сначала придется разжать arts-1.1.4.tar.bz2 в arts-1.1.4.tar, а потом уже наложить патч. Далее получившийся arts-1.1.5.tar нужно будет снова сжать. Полагаю, это сделано для того, чтобы не испытывать трудностей с разной степенью сжатия, т.к. одинаковые по названию, но сжатые с разной степенью архивы имеют разный размер и для xdelta - разные файлы. Для данного конкретного случая можно использовать скрипт вроде следующего: #!/bin/sh [ $# -lt 1 ] && (echo "usage: ./$0 file1.xelta file2.delta file3.delta ...";exit 1) for i in $@; do XDELTA=$i ORIGINAL=`echo $XDELTA | cut -d - -f 1,2`.tar.bz2 NEWFILE=`echo $XDELTA | cut -d - -f 1,3 | sed -e 's/\.xdelta//g'` UNBZIPPED=`echo $ORIGINAL | sed -e 's/\.bz2//g'` bzip2 -d $ORIGINAL xdelta patch $XDELTA bzip2 $NEWFILE rm $UNBZIPPED done Просто положим его в /usr/ports/distfiles/KDE, предварительно скачав в этот каталог все xdelta-diff'ы, и запустим ./xdpatch.sh *.delta Может случиться, что у итоговых архивов будет иная md5-сумма, нежели указанная в distinfo соответствующего пакета, и система полезет качать его из сети. Что ж, исправить руками distinfo все-таки быстрее, чем качать 30 мегабайт :)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру