* [devel] changelogs for apt repo
@ 2008-05-17 5:34 Alexey Tourbin
2008-05-17 9:50 ` Евгений Терешков
2008-05-17 12:06 ` Alexey Gladkov
0 siblings, 2 replies; 35+ messages in thread
From: @ 2008-05-17 5:34 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 5:34 [devel] changelogs for apt repo Alexey Tourbin
@ 2008-05-17 9:50 ` Евгений Терешков
2008-05-17 12:06 ` Alexey Gladkov
1 sibling, 0 replies; 35+ messages in thread
From: @ 2008-05-17 9:50 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 5:34 [devel] changelogs for apt repo Alexey Tourbin
2008-05-17 9:50 ` Евгений Терешков
@ 2008-05-17 12:06 ` Alexey Gladkov
2008-05-17 13:23 ` Andrey Rahmatullin
2008-05-17 19:00 ` Alexey Tourbin
1 sibling, 2 replies; 35+ messages in thread
From: @ 2008-05-17 12:06 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 12:06 ` Alexey Gladkov
@ 2008-05-17 13:23 ` Andrey Rahmatullin
2008-05-17 13:54 ` Alexey Gladkov
2008-05-17 19:00 ` Alexey Tourbin
1 sibling, 1 reply; 35+ messages in thread
From: @ 2008-05-17 13:23 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 13:23 ` Andrey Rahmatullin
@ 2008-05-17 13:54 ` Alexey Gladkov
0 siblings, 0 replies; 35+ messages in thread
From: @ 2008-05-17 13:54 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 12:06 ` Alexey Gladkov
2008-05-17 13:23 ` Andrey Rahmatullin
@ 2008-05-17 19:00 ` Alexey Tourbin
2008-05-17 20:01 ` Led
` (3 more replies)
1 sibling, 4 replies; 35+ messages in thread
From: @ 2008-05-17 19:00 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 20:01 ` Led
@ 2008-05-17 19:55 ` Andrey Rahmatullin
2008-05-17 21:16 ` Led
2008-05-17 20:50 ` Alexey Tourbin
1 sibling, 1 reply; 35+ messages in thread
From: @ 2008-05-17 19:55 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 19:00 ` Alexey Tourbin
@ 2008-05-17 20:01 ` Led
2008-05-17 19:55 ` Andrey Rahmatullin
2008-05-17 20:50 ` Alexey Tourbin
2008-05-17 21:58 ` Alexey Gladkov
` (2 subsequent siblings)
3 siblings, 2 replies; 35+ messages in thread
From: @ 2008-05-17 20:01 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 20:01 ` Led
2008-05-17 19:55 ` Andrey Rahmatullin
@ 2008-05-17 20:50 ` Alexey Tourbin
1 sibling, 0 replies; 35+ messages in thread
From: @ 2008-05-17 20:50 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:16 ` Led
@ 2008-05-17 21:09 ` Andrey Rahmatullin
2008-05-18 6:34 ` Kirill Maslinsky
0 siblings, 1 reply; 35+ messages in thread
From: @ 2008-05-17 21:09 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 19:55 ` Andrey Rahmatullin
@ 2008-05-17 21:16 ` Led
2008-05-17 21:09 ` Andrey Rahmatullin
0 siblings, 1 reply; 35+ messages in thread
From: @ 2008-05-17 21:16 UTC (permalink / raw)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:58 ` Alexey Gladkov
@ 2008-05-17 21:46 ` Andrey Rahmatullin
2008-05-17 22:14 ` Alexey Gladkov
2008-05-17 22:45 ` Sergey Bolshakov
2008-05-17 23:03 ` Alexey Tourbin
2 siblings, 1 reply; 35+ messages in thread
From: Andrey Rahmatullin @ 2008-05-17 21:46 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 374 bytes --]
On Sun, May 18, 2008 at 01:58:11AM +0400, Alexey Gladkov wrote:
> Может пойти по другому пути и разбить этот файл. Чтобы трафик между
> сервером и обновляемым клиентом была меньше.
В дебиане давно уже диффы пересылаются, привет.
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
А не то что correctly - не correctly.
-- wrar in sisyphus@
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 19:00 ` Alexey Tourbin
2008-05-17 20:01 ` Led
@ 2008-05-17 21:58 ` Alexey Gladkov
2008-05-17 21:46 ` Andrey Rahmatullin
` (2 more replies)
2008-05-18 2:07 ` Alexey Tourbin
2008-05-20 2:34 ` Alexey Morozov
3 siblings, 3 replies; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-17 21:58 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> Но там уже есть description (а не только summary). Так что для чего
> предназначен pkglist это вопрос неоднозначный.
Эта информация нужна для поиска.
> В pkglist вообще-то
> просто копируются хедеры (и их можно читать прямо в цикле через
> headerRead), но при копировании хедеры основательно урезаются,
> исключительно с целью экономии места.
Это я знаю :)
Вот именно. Их урезают и делают как можно меньше чтобы не перегружать
пользовательскую машину информацией о всём репозитории.
> Какая плата тебя бы устроила? Думаю что плату можно будет немного
> уменьшить, если сначала отсортировать пакеты по %{SOURCERPM}, а уже
> потом выгонять хедеры. Тогда bzip2 лучше сожмёт одинаковые changelog'и
> подряд идущих подпакетов.
Может пойти по другому пути и разбить этот файл. Чтобы трафик между
сервером и обновляемым клиентом была меньше. Ведь, как ты правильно
сказал, pkglist это сваленные в одну кучу хэдеры (плюс они ещё
пожаты). Если переделать алгоритм чтобы хэдеры передавались по
одиночке, а на стороне клиента объединялись, то скачиваться будут
только новые и изменённые хэдеры.
Сейчас меня несколько волнует, что при обновлении к тебе на машину
копируются хэдеры от *всех* пакетов в сизифе вне зависимости
изменились они или нет.
> И это будет опция. Если ты генерируешь свой репозитарий с жесткими
> ограничениями на размер, то это можно бдует отключить.
Но сизиф-то будет с этой информацией. И поэтому у всех наших клиентов
ты увеличишь размер pkglist.
> Есть такая дилемма.
Так может написать такую поддержку в apt и перейти на них. В этих
базах есть всё что может понадобиться. Это тоже хэдеры плюс индексы.
> Но ведь мы можем обновляться не с предпоследней версии на последнюю,
> а с ещё более ранней. То есть мы можем пропустить промежуточное важное
> изменение. Поэтому есть наибольший смысл сохранять changelog'и строго
> по известной дате, как я и предлагаю сделать.
И за сколько будем хранить, за год? Через какой период по вашему люди
обновляются сидя на сизифе (ведь именно этот период тебе и нужно
охватить с таким подходом) ?
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 22:14 ` Alexey Gladkov
@ 2008-05-17 22:00 ` Andrey Rahmatullin
2008-05-17 22:21 ` Alexey Gladkov
0 siblings, 1 reply; 35+ messages in thread
From: Andrey Rahmatullin @ 2008-05-17 22:00 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 494 bytes --]
On Sun, May 18, 2008 at 02:14:34AM +0400, Alexey Gladkov wrote:
>> В дебиане давно уже диффы пересылаются, привет.
> Очень за них рад, но у нас нет диффов, привет.
Ну так может в этом направлении и думать?
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
> >огласить весь список rpm -qa | grep ^kde? :)
> >3.2.3, Sisyphus (20040804)
> Ничче не понимаю. У меня вроде то же самое (см. выше). Будем Зерга звать?
пора.
Зееерггггг!!!!!?
-- shrek in sisyphus@
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 22:21 ` Alexey Gladkov
@ 2008-05-17 22:10 ` Andrey Rahmatullin
2008-05-17 22:32 ` Alexey Gladkov
0 siblings, 1 reply; 35+ messages in thread
From: Andrey Rahmatullin @ 2008-05-17 22:10 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 343 bytes --]
On Sun, May 18, 2008 at 02:21:39AM +0400, Alexey Gladkov wrote:
> Хотите попробовать прикрутить поддержку диффов?
Ох.
Почему-то кажется, что не хочу.
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
> kak otpisatsa ot etoi rassulki? =)
Отписка происходит автоматически по итогам месяца.
-- lav in community@
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:46 ` Andrey Rahmatullin
@ 2008-05-17 22:14 ` Alexey Gladkov
2008-05-17 22:00 ` Andrey Rahmatullin
0 siblings, 1 reply; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-17 22:14 UTC (permalink / raw)
To: ALT Linux Team development discussions
Andrey Rahmatullin wrote:
> В дебиане давно уже диффы пересылаются, привет.
Очень за них рад, но у нас нет диффов, привет.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 22:00 ` Andrey Rahmatullin
@ 2008-05-17 22:21 ` Alexey Gladkov
2008-05-17 22:10 ` Andrey Rahmatullin
0 siblings, 1 reply; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-17 22:21 UTC (permalink / raw)
To: ALT Linux Team development discussions
Andrey Rahmatullin wrote:
> Ну так может в этом направлении и думать?
Разумеется. С ростом репозитория служебной информации будет всё
больше. Плюс Алексей способствует её увеличению :)
Хотите попробовать прикрутить поддержку диффов?
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 22:10 ` Andrey Rahmatullin
@ 2008-05-17 22:32 ` Alexey Gladkov
0 siblings, 0 replies; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-17 22:32 UTC (permalink / raw)
To: ALT Linux Team development discussions
Andrey Rahmatullin wrote:
> Ох.
> Почему-то кажется, что не хочу.
Вот именно потому что все так отвечают у нас нет диффов в apt.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:58 ` Alexey Gladkov
2008-05-17 21:46 ` Andrey Rahmatullin
@ 2008-05-17 22:45 ` Sergey Bolshakov
2008-05-17 23:03 ` Alexey Tourbin
2 siblings, 0 replies; 35+ messages in thread
From: Sergey Bolshakov @ 2008-05-17 22:45 UTC (permalink / raw)
To: devel
>>>>> "Alexey" == Alexey Gladkov <legion-u2l5PoMzF/Uox3rIn2DAYQ@public.gmane.org> writes:
> Alexey Tourbin wrote:
>> Но там уже есть description (а не только summary). Так что для чего
>> предназначен pkglist это вопрос неоднозначный.
> Эта информация нужна для поиска.
>> В pkglist вообще-то
>> просто копируются хедеры (и их можно читать прямо в цикле через
>> headerRead), но при копировании хедеры основательно урезаются,
>> исключительно с целью экономии места.
> Это я знаю :)
> Вот именно. Их урезают и делают как можно меньше чтобы не перегружать
> пользовательскую машину информацией о всём репозитории.
>> Какая плата тебя бы устроила? Думаю что плату можно будет немного
>> уменьшить, если сначала отсортировать пакеты по %{SOURCERPM}, а уже
>> потом выгонять хедеры. Тогда bzip2 лучше сожмёт одинаковые changelog'и
>> подряд идущих подпакетов.
> Может пойти по другому пути и разбить этот файл. Чтобы трафик между
> сервером и обновляемым клиентом была меньше. Ведь, как ты правильно
> сказал, pkglist это сваленные в одну кучу хэдеры (плюс они ещё
> пожаты). Если переделать алгоритм чтобы хэдеры передавались по
> одиночке, а на стороне клиента объединялись, то скачиваться будут
> только новые и изменённые хэдеры.
Либо разбить на два:
первый -- старый минус дескрипшны, второй -- дополнительный,
с дескрипшнами и полным чейнджлогом.
Качать ли второй -- скажем, опцией в apt.conf.
--
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:58 ` Alexey Gladkov
2008-05-17 21:46 ` Andrey Rahmatullin
2008-05-17 22:45 ` Sergey Bolshakov
@ 2008-05-17 23:03 ` Alexey Tourbin
2008-05-19 4:02 ` Ildar Mulyukov
2 siblings, 1 reply; 35+ messages in thread
From: Alexey Tourbin @ 2008-05-17 23:03 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3858 bytes --]
On Sun, May 18, 2008 at 01:58:11AM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >Но там уже есть description (а не только summary).
> >Так что для чего
> >предназначен pkglist это вопрос
> >неоднозначный.
>
> Эта информация нужна для поиска.
Значит, предназначение pkglist двоякое: как текстовая информация
для чтения человеком (и поиска), так и информация для установки
пакетов и автоматического разрешения зависимостей.
> >Какая плата тебя бы устроила? Думаю что
> >плату можно будет немного
> >уменьшить, если сначала отсортировать
> >пакеты по %{SOURCERPM}, а уже
> >потом выгонять хедеры. Тогда bzip2 лучше
> >сожмёт одинаковые changelog'и
> >подряд идущих подпакетов.
>
> Может пойти по другому пути и разбить
> этот файл. Чтобы трафик между сервером и
> обновляемым клиентом была меньше. Ведь,
> как ты правильно сказал, pkglist это
> сваленные в одну кучу хэдеры (плюс они
> ещё пожаты). Если переделать алгоритм
> чтобы хэдеры передавались по одиночке, а
> на стороне клиента объединялись, то
> скачиваться будут только новые и
> изменённые хэдеры.
Если класть хедеры в отдельные файлы, то оверхед в связи с этим
будет очень большой (это и inode'ы, и перекачка информации о файлах).
На самом деле если pkglist не сжимать, то rsync прокачает его гораздо
быстрее (особенно если отсортировать хедеры по %{SOURCERPM}). Средний
размер хедера в pkglist 2K, если сделать rsync --block-size=1K то мы
возьмём почти чистый diff (с оверхедом того же порядка, что и при
передаче хедеров по отдельности). Но почему-то почти все используют
ftp, и ради них pkglist бзипют.
> Сейчас меня несколько волнует, что при
> обновлении к тебе на машину копируются
> хэдеры от *всех* пакетов в сизифе вне
> зависимости изменились они или нет.
Это всё-таки не очень большой объем информации (3-4M) по сравнению
с типичным размером dist-upgrade.
> >И это будет опция. Если ты генерируешь
> >свой репозитарий с жесткими
> >ограничениями на размер, то это можно
> >бдует отключить.
>
> Но сизиф-то будет с этой информацией. И
> поэтому у всех наших клиентов ты
> увеличишь размер pkglist.
А также все клиенты смогут читать changelog'и ДО того, как что-то
скачать и обновить (хуже того, apt устроен таким образом, что даже в
промежуток между скачать и обновить довольно-таки неудобно вклиниться --
можно, конечно, сделать apt-get --download-only и потом искать скоченые
*.rpm'ы в /var/*/apt, которые он к тому же манглит...).
В общем, взыскательные клиенты могут и оценить фичу.
> >Есть такая дилемма.
>
> Так может написать такую поддержку в apt и
> перейти на них. В этих базах есть всё что
> может понадобиться. Это тоже хэдеры плюс
> индексы.
apt всё равно создаёт свой собственный pkgcache.bin, который он mmap'ит
в память, и все его алгоритмы завязаны на формат этого кеша (который я
плохо понимаю!).
И, собственно, rpmdb как альтернатива pkglist ничего не экономит;
а rpmdb как дополнение к pkglist порождает вопросы, напр. должна ли
эта rpmdb скачиваться при apt-get update или нет. Или у неё статус
такой же как у contents_index. Типа кто-то его туда наклал.
> >Но ведь мы можем обновляться не с
> >предпоследней версии на последнюю,
> >а с ещё более ранней. То есть мы можем
> >пропустить промежуточное важное
> >изменение. Поэтому есть наибольший
> >смысл сохранять changelog'и строго
> >по известной дате, как я и предлагаю
> >сделать.
>
> И за сколько будем хранить, за год? Через
> какой период по вашему люди обновляются
> сидя на сизифе (ведь именно этот период
> тебе и нужно охватить с таким подходом) ?
Ну, сейчас "эпоха" начинается с бранча 4.0. Видимо за три года где-то.
Но по идее за эти ближайшие годы инфраструктура интернета разовьётся не
меньше, чем мы успеем написать changelog'ов.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 19:00 ` Alexey Tourbin
2008-05-17 20:01 ` Led
2008-05-17 21:58 ` Alexey Gladkov
@ 2008-05-18 2:07 ` Alexey Tourbin
2008-05-18 2:25 ` Alexey Tourbin
2008-05-18 9:26 ` Alexey Gladkov
2008-05-20 2:34 ` Alexey Morozov
3 siblings, 2 replies; 35+ messages in thread
From: Alexey Tourbin @ 2008-05-18 2:07 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 12785 bytes --]
On Sat, May 17, 2008 at 09:34:27AM +0400, Alexey Tourbin wrote:
> Теперь остаётся выяснить, сколько это занимает места.
>
> Обычная генерация сизифа:
>
> $ cp -prs /ALT/Sisyphus/x86_64 /ALT/Sisyphus/noarch .
> $ rm -f x86_64/base/* noarch/base/*
> $ PATH=$PWD:$PATH genbasedir --topdir=$PWD x86_64
> $ PATH=$PWD:$PATH genbasedir --topdir=$PWD noarch
> $ du -bk x86_64/base/pkglist.classic.bz2 noarch/base/pkglist.classic.bz2
> 2421 x86_64/base/pkglist.classic.bz2
> 1049 noarch/base/pkglist.classic.bz2
> $
>
> Генерация с опцией --changelog-since=2007-01-01:
>
> $ PATH=$PWD:$PATH genbasedir --topdir=$PWD --changelog-since=2007-01-01 x86_64
> $ PATH=$PWD:$PATH genbasedir --topdir=$PWD --changelog-since=2007-01-01 noarch
> $ du -bk x86_64/base/pkglist.classic.bz2 noarch/base/pkglist.classic.bz2
> 3536 x86_64/base/pkglist.classic.bz2
> 1302 noarch/base/pkglist.classic.bz2
> $
>
> Таким образом, размер скачиваемого при 'apt-get update' заметно
> увеличивается (примерно на треть). Я считаю это приемлемой платой
> за удовольствие просмотреть changelog пакета ДО скачивания и установки.
On Sat, May 17, 2008 at 11:00:34PM +0400, Alexey Tourbin wrote:
> Какая плата тебя бы устроила? Думаю что плату можно будет немного
> уменьшить, если сначала отсортировать пакеты по %{SOURCERPM}, а уже
> потом выгонять хедеры. Тогда bzip2 лучше сожмёт одинаковые changelog'и
> подряд идущих подпакетов.
Я сделал предварительную реализацию сортировки по %{SOURCERPM}.
Результаты теперь такие:
$ PATH=$PWD:$PATH genbasedir --topdir=$PWD x86_64
$ PATH=$PWD:$PATH genbasedir --topdir=$PWD noarch
$ du -bk x86_64/base/pkglist.classic.bz2 noarch/base/pkglist.classic.bz2
2384 x86_64/base/pkglist.classic.bz2
1048 noarch/base/pkglist.classic.bz2
$
$ PATH=$PWD:$PATH genbasedir --topdir=$PWD --changelog-since=2007-01-01 x86_64
$ PATH=$PWD:$PATH genbasedir --topdir=$PWD --changelog-since=2007-01-01 noarch
$ du -bk x86_64/base/pkglist.classic.bz2 noarch/base/pkglist.classic.bz2
3306 x86_64/base/pkglist.classic.bz2
1300 noarch/base/pkglist.classic.bz2
$
Из этого видно следующее: для noarch пакетов переупорядочивание
по %{SOURCERPM} почти ничего не дает. Это связано с тем, что noarch
пакеты реже распиливают, а при распиливании названия подпакетов реже
отличаются по префиксу (то есть глобального переупорядочивания, которое
может повысить степень сжатия, как напр. в случае с lib%name и %name,
не происходит).
Для x86_64 экономия заметна даже без генерации changelog'ов (2421/2384 =
1.6%, за счёт лучшего совпадения других атрибутов подпакетов),
а особенно с changelog'ом (3536/3306 = 7%, за счёт лучшего сжатия
одинаковых changelog'ов подряд идущих подпакетов).
В принципе выгаданные несколько процентов позволяют мне с большей
уверенностью говорить о включении changelog'ов в репозитарий, хотя
общая картина остаётся скорее прежней: если включить changelog'и по
предложенной схеме, то размер скачиваемого при 'apt-get update'
увеличивается примерно на треть.
Вот патч на genpkglist.cc, я его плохо проверил, но вроде работает.
У меня уже патч на патче сидит и я пока не знаю как его лучше приложить
к тому что есть.
--- apt-0.5.15lorg2/tools/genpkglist.cc- 2008-05-18 00:48:01 +0400
+++ apt-0.5.15lorg2/tools/genpkglist.cc 2008-05-18 05:14:06 +0400
@@ -320,7 +320,7 @@ done:
}
bool copyFields(Header h, Header newHeader,
- FILE *idxfile, const char *directory, char *filename,
+ FILE *idxfile, const char *directory, const char *filename,
unsigned filesize, map<string,UpdateInfo> &updateInfo,
bool fullFileList)
{
@@ -460,99 +460,34 @@ void usage()
cerr << " one preceding entry (if available)" <<endl;
}
-
-
-#ifndef HAVE_SCANDIR
-// from glibc 1.09.1 mod'd by jmik, ins'd by asm, fix'd by sbi
-int alphasort(const void * a, const void * b)
+static void progress(int cur, int total)
{
- return strcmp ((*(struct dirent **) a)->d_name,
- (*(struct dirent **) b)->d_name);
+ if (cur > 1)
+ printf("\b\b\b\b\b\b\b\b\b\b");
+ printf(" %04i/%04i", cur, total);
+ fflush(stdout);
}
-int scandir(const char * dir, struct dirent *** namelist,
- int (* select)(struct dirent *),
- int (* cmp)(const void *, const void *))
+struct rpmfile {
+ const char *basename;
+ const char *sourcerpm;
+};
+static
+int rpmfilecmp(const void *a, const void *b)
{
- DIR *dp = opendir (dir);
- struct dirent **v = NULL;
- size_t vsize = 0, i;
- struct dirent *d;
- int save;
-
- if (dp == NULL)
- return -1;
-
- save = errno;
- errno = 0;
-
- i = 0;
- while ((d = readdir (dp)) != NULL)
- {
- if (select == NULL || (*select) (d))
- {
- if (i == vsize)
- {
- struct dirent **newv;
- if (vsize == 0)
- vsize = 10;
- else
- vsize *= 2;
- newv = (struct dirent **) realloc (v, vsize * sizeof (*v));
- if (newv == NULL)
- {
- lose:
- errno = ENOMEM;
- break;
- }
- v = newv;
- }
-
- v[i] = (struct dirent *) malloc (d->d_reclen);
- if (v[i] == NULL)
- goto lose;
-
- // *v[i++] = *d;
- memcpy(v[i], d, d->d_reclen);
- i++;
- }
- }
-
- v[i] = NULL;
-
- if (errno != 0)
- {
- save = errno;
- (void) closedir (dp);
- while (i > 0)
- free (v[--i]);
- free (v);
- errno = save;
- return -1;
- }
-
- (void) closedir (dp);
- errno = save;
-
- /* Sort the list if we have a comparison function to sort with. */
- if (cmp != NULL)
- qsort (v, i, sizeof (struct dirent *), cmp);
-
- *namelist = v;
- return i;
+ const struct rpmfile *A = (struct rpmfile *)a;
+ const struct rpmfile *B = (struct rpmfile *)b;
+ int cmp = strcmp(A->sourcerpm, B->sourcerpm);
+ if (cmp)
+ return cmp;
+ return strcmp(A->basename, B->basename);
}
-// end of new stuff from glibc
-#endif /* !HAVE_SCANDIR */
-
int main(int argc, char ** argv)
{
string rpmsdir;
string pkglist_path;
- FD_t outfd, fd;
- struct dirent **dirEntries;
- int entry_no, entry_cur;
map<string,UpdateInfo> updateInfo;
CachedMD5 *md5cache;
char *op_dir;
@@ -561,13 +496,13 @@ int main(int argc, char ** argv)
char *op_update = NULL;
long /* time_t */ changelog_since = 0;
FILE *idxfile;
- int i;
bool fullFileList = false;
bool progressBar = false;
const char *pkgListSuffix = NULL;
bool pkgListAppend = false;
setlocale(LC_ALL, "C");
+ int i;
for (i = 1; i < argc; i++) {
if (strcmp(argv[i], "--index") == 0) {
i++;
@@ -674,14 +609,16 @@ int main(int argc, char ** argv)
string dirtag = "RPMS." + string(op_suf);
- entry_no = scandir(rpmsdir.c_str(), &dirEntries, selectDirent, alphasort);
- if (entry_no < 0) {
- cerr << "genpkglist: error opening directory " << rpmsdir << ":"
- << strerror(errno);
- return 1;
+ if (chdir(rpmsdir.c_str())) {
+ perror(rpmsdir.c_str());
+ exit(1);
+ }
+
+ glob_t gl;
+ if (glob("*.rpm", 0, NULL, &gl)) {
+ cerr << rpmsdir << "/" << "*.rpm: glob failed" <<endl;
+ exit(1);
}
-
- chdir(rpmsdir.c_str());
if (pkgListSuffix != NULL)
pkglist_path = pkglist_path + "/base/pkglist." + pkgListSuffix;
@@ -689,6 +626,7 @@ int main(int argc, char ** argv)
pkglist_path = pkglist_path + "/base/pkglist." + op_suf;
+ FD_t outfd;
if (pkgListAppend == true && FileExists(pkglist_path)) {
outfd = fdOpen(pkglist_path.c_str(), O_WRONLY|O_APPEND, 0644);
} else {
@@ -711,30 +649,54 @@ int main(int argc, char ** argv)
int isSource;
#endif
- if (!fullFileList) {
- // ALT: file list cannot be stripped in a dumb manner -- this is going
- // to produce unmet dependencies. First pass is required to initialize
- // certain data structures.
- for (entry_cur = 0; entry_cur < entry_no; entry_cur++) {
- if (progressBar) {
- if (entry_cur)
- printf("\b\b\b\b\b\b\b\b\b\b");
- printf(" %04i/%04i", entry_cur + 1, entry_no);
- fflush(stdout);
- }
+ struct rpmfile *rpms = new struct rpmfile[gl.gl_pathc];
+ int ix, n = 0;
+
+ for (ix = 0; ix < gl.gl_pathc; ix++) {
+ if (progressBar)
+ progress(ix+1, gl.gl_pathc);
+
+ const char *basename = gl.gl_pathv[ix];
+ FD_t fd = Fopen(basename, "r");
+ if (!fd) {
+ cerr << "Warning: " << basename << ": " << strerror(errno) <<endl;
+ continue;
+ }
- fd = fdOpen(dirEntries[entry_cur]->d_name, O_RDONLY, 0666);
- if (!fd)
- continue;
int rc;
Header h;
#if RPM_VERSION >= 0x040100
rc = rpmReadPackageFile(ts, fd, dirEntries[entry_cur]->d_name, &h);
- if (rc == RPMRC_OK || rc == RPMRC_NOTTRUSTED || rc == RPMRC_NOKEY) {
+ if (rc == RPMRC_OK || rc == RPMRC_NOTTRUSTED || rc == RPMRC_NOKEY)
#else
rc = rpmReadPackageHeader(fd, &h, &isSource, NULL, NULL);
- if (rc == 0) {
+ if (rc == 0)
#endif
+ {
+ ; // good
+ }
+ else {
+ cerr << "Warning: " << basename << ": cannot read package header" <<endl;
+ continue;
+ }
+
+ const char *sourcerpm;
+ rc = headerGetEntry(h, RPMTAG_SOURCERPM, NULL, (void**)&sourcerpm, NULL);
+ if (!(rc == 1)) {
+ cerr << "Warning: " << basename << ": no SOURCERPM tag" <<endl;
+ continue;
+ }
+
+ sourcerpm = strdup(sourcerpm);
+ assert(sourcerpm);
+ rpms[n].basename = basename;
+ rpms[n].sourcerpm = sourcerpm;
+ n++;
+
+ // ALT: file list cannot be stripped in a dumb manner -- this is going
+ // to produce unmet dependencies. First pass is required to initialize
+ // certain data structures.
+ if (!fullFileList) {
// path-like Requires
int_32 reqtype = 0;
const char **requires = NULL;
@@ -776,37 +738,35 @@ int main(int argc, char ** argv)
headerFreeTag(h, dn, (rpmTagType)dnt);
headerFreeTag(h, di, (rpmTagType)dit);
- headerFree(h);
}
+ headerFree(h);
Fclose(fd);
- }
}
- for (entry_cur = 0; entry_cur < entry_no; entry_cur++) {
+
+ qsort(rpms, n, sizeof(struct rpmfile), rpmfilecmp);
+
+ for (ix = 0; ix < n; ix++) {
struct stat sb;
- if (progressBar) {
- if (entry_cur)
- printf("\b\b\b\b\b\b\b\b\b\b");
- printf(" %04i/%04i", entry_cur + 1, entry_no);
- fflush(stdout);
- }
+ if (progressBar)
+ progress(ix+1, n);
- if (stat(dirEntries[entry_cur]->d_name, &sb) < 0) {
- cerr << "\nWarning: " << strerror(errno) << ": " <<
- dirEntries[entry_cur]->d_name << endl;
- continue;
+ const char *basename = rpms[ix].basename;
+
+ if (stat(basename, &sb) < 0) {
+ cerr << "Fatal: " << basename << ": " << strerror(errno) <<endl;
+ exit(1);
}
{
Header h;
int rc;
- fd = fdOpen(dirEntries[entry_cur]->d_name, O_RDONLY, 0666);
+ FD_t fd = Fopen(basename, "r");
if (!fd) {
- cerr << "\nWarning: " << strerror(errno) << ": " <<
- dirEntries[entry_cur]->d_name << endl;
- continue;
+ cerr << "Fatal: " << basename << ": " << strerror(errno) <<endl;
+ exit(1);
}
#if RPM_VERSION >= 0x040100
@@ -822,14 +782,13 @@ int main(int argc, char ** argv)
newHeader = headerNew();
copyFields(h, newHeader, idxfile, dirtag.c_str(),
- dirEntries[entry_cur]->d_name,
+ basename,
sb.st_size, updateInfo, fullFileList);
if (changelog_since > 0)
copyChangelog(changelog_since, h, newHeader);
- md5cache->MD5ForFile(string(dirEntries[entry_cur]->d_name),
- sb.st_mtime, md5);
+ md5cache->MD5ForFile(string(basename), sb.st_mtime, md5);
headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, md5, 1);
headerWrite(outfd, newHeader, HEADER_MAGIC_YES);
@@ -837,8 +796,8 @@ int main(int argc, char ** argv)
headerFree(newHeader);
headerFree(h);
} else {
- cerr << "\nWarning: Skipping malformed RPM: " <<
- dirEntries[entry_cur]->d_name << endl;
+ cerr << "Fatal: " << basename << ": cannot read package header" <<endl;
+ exit(1);
}
Fclose(fd);
}
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-18 2:07 ` Alexey Tourbin
@ 2008-05-18 2:25 ` Alexey Tourbin
2008-05-18 9:26 ` Alexey Gladkov
1 sibling, 0 replies; 35+ messages in thread
From: Alexey Tourbin @ 2008-05-18 2:25 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 428 bytes --]
On Sun, May 18, 2008 at 06:07:51AM +0400, Alexey Tourbin wrote:
> В принципе выгаданные несколько процентов позволяют мне с большей
> уверенностью говорить о включении changelog'ов в репозитарий, хотя
> общая картина остаётся скорее прежней: если включить changelog'и по
> предложенной схеме, то размер скачиваемого при 'apt-get update'
> увеличивается примерно на треть.
В абсолютных цифрах это примерно 3.5M -> 4.5M.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 21:09 ` Andrey Rahmatullin
@ 2008-05-18 6:34 ` Kirill Maslinsky
0 siblings, 0 replies; 35+ messages in thread
From: Kirill Maslinsky @ 2008-05-18 6:34 UTC (permalink / raw)
To: devel
On Sun, May 18, 2008 at 03:09:39AM +0600, Andrey Rahmatullin wrote:
> On Sun, May 18, 2008 at 12:16:21AM +0300, Led wrote:
> > Вменяемый Summary - достаточно.
> Наивно enough.
>
> > > Плюсм apt-cache search особого смысла не имеет без дескрипшенов.
> > См. выше. Но яопять же - это ИМХО.
> А это просто бред.
> См. многочисленные техники прописывания всякой полезной инфы в дескрипшен
> именно с целью релевантного apt-cache search.
Кстати, тоже неплохо бы оформить в полиси (хотя бы даже HOWTO),
как писать description и summary. А то они не всегда бывают
информативные.
--
Kirill Maslinsky
ALT Linux Team
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-18 2:07 ` Alexey Tourbin
2008-05-18 2:25 ` Alexey Tourbin
@ 2008-05-18 9:26 ` Alexey Gladkov
2008-05-18 21:35 ` Alexey Tourbin
1 sibling, 1 reply; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-18 9:26 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> Я сделал предварительную реализацию сортировки по %{SOURCERPM}.
> Результаты теперь такие:
У меня вопрос: изменив сортировку по алфавиту на сортировку по
%{SOURCERPM} ты не ухудшил скорость поиска `apt-cache search` ?
Не нужно ли ввести корректировку алгоритма поиска (apt-cache search),
чтобы он искал только в первом changelog'е при условии что поле
%{SOURCERPM} у нескольких пакетов в pkglist совпадает?
Вообще, очень неприятно что changelog'и дублируются в этой реализации.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-18 9:26 ` Alexey Gladkov
@ 2008-05-18 21:35 ` Alexey Tourbin
2008-05-18 22:26 ` Alexey Gladkov
0 siblings, 1 reply; 35+ messages in thread
From: Alexey Tourbin @ 2008-05-18 21:35 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3689 bytes --]
On Sun, May 18, 2008 at 01:26:20PM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >Я сделал предварительную реализацию
> >сортировки по %{SOURCERPM}.
> >Результаты теперь такие:
>
> У меня вопрос: изменив сортировку по
> алфавиту на сортировку по %{SOURCERPM} ты не
> ухудшил скорость поиска `apt-cache search` ?
А как могла скорость ухудшиться? Однако появилась особенность:
в выдаче 'apt-cache search' найденные пакеты отсортированы не по
названию, а по %{SOURCERPM}.
(Старое поведение)
$ apt-cache search apt |awk '$1~/apt\>/'
apt - Debian's Advanced Packaging Tool with RPM support
apt-conf-desktop - A set of apt configuration files for ALT Linux Desktop
apt-conf-server - A set of apt configuration files for ALT Linux Server
apt-conf-sisyphus - A set of apt configuration files for ALT Linux Sisyphus
apt-rsync - rsync method support for APT
apt-utils - Utilities to create APT repositaries (the indices)
capt - CAPT Linux driver
kio-apt - An apt:/ protocol in konqueror
libapt - APT's core libraries
libapt-devel - Development files and documentation for APT's core libs
apt-log - Log support for APT
apt-scripts - Lua scripts for APT
docs-alterator_apt-kirill - Extra packages
docs-packages_apt - Install and remove programs (packages)
$
(Новое поведение)
$ ./build/aptbox/apt-cache search apt |awk '$1~/apt\>/'
apt - Debian's Advanced Packaging Tool with RPM support
apt-rsync - rsync method support for APT
apt-utils - Utilities to create APT repositaries (the indices)
libapt - APT's core libraries
libapt-devel - Development files and documentation for APT's core libs
apt-conf-desktop - A set of apt configuration files for ALT Linux Desktop
apt-conf-server - A set of apt configuration files for ALT Linux Server
apt-conf-sisyphus - A set of apt configuration files for ALT Linux Sisyphus
capt - CAPT Linux driver
kio-apt - An apt:/ protocol in konqueror
apt-log - Log support for APT
apt-scripts - Lua scripts for APT
docs-alterator_apt-kirill - Extra packages
docs-packages_apt - Install and remove programs (packages)
$
Теперь libapt* "примыкает" к пакетам apt*. В принципе это изменение
нельзя однозначно квалифицировать как нежелательное или неправильное,
потому что нарушение алфавитного порядка позволяет нам догадаться,
что речь идёт о подпакетах, собранных из одного src.rpm пакета
(группировку по src.rpm при поиске можно даже считать интересной фичей,
просто это информация здесь не выражена явно).
К тому же на самом деле сортировка действует только в пределах
репозитария, так что при переходе к noarch пакеты опять начинаются
с буквы "a".
> Не нужно ли ввести корректировку
> алгоритма поиска (apt-cache search), чтобы он
> искал только в первом changelog'е при условии
> что поле %{SOURCERPM} у нескольких пакетов в
> pkglist совпадает?
Наверное, нужно. То есть при совпадении по changelog'у следовало
бы игнорировать все последующие (adjacent) пакеты с совпадающим SOURCERPM.
Но я боюсь что жесткая структурная декомпозиция снизу вверх, то есть
поиск идёт per header, и протощить нужную информацию будет сложновато.
Точнее, не знаю, нужно или не нужно.
Я пока ещё не добавил поиск по changelog'ам.
> Вообще, очень неприятно что changelog'и
> дублируются в этой реализации.
Но если дубли сгруппировать, то они очень хорошо сжимаются.
Если же выносить дублирующуюся информацию в отдельное место,
то, прежде всего, придётся распустить Header как структуру;
а это дополнительный оверхед на bookkeeping + проверка целостности.
Попробуй распустить хедер на два "подхедера", сразу встанет вопрос,
соответствует ли первый подхедер второму или нет.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-18 21:35 ` Alexey Tourbin
@ 2008-05-18 22:26 ` Alexey Gladkov
0 siblings, 0 replies; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-18 22:26 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> А как могла скорость ухудшиться?
Я думал ты добавил changelog в поиск.
> Я пока ещё не добавил поиск по changelog'ам.
Я считаю что и не нужно добавлять. Потому что `apt-cache search`
предназначен для поиска пакетов, а в случае подключения changelog'ов
будут находиться пакеты в changelog'е которого содержится ключевое
слово. Ты приводил пример с CVE, но такой тип поиска намного более
редок чем обычный поиск пакета по ключевому слову. Если всё-таки
кому-то хочется искать по ним, то он сможет воспользоваться --full.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 23:03 ` Alexey Tourbin
@ 2008-05-19 4:02 ` Ildar Mulyukov
2008-05-19 4:53 ` Alexey Tourbin
0 siblings, 1 reply; 35+ messages in thread
From: Ildar Mulyukov @ 2008-05-19 4:02 UTC (permalink / raw)
To: ALT Linux Team development discussions
On 18.05.2008 05:03:31, Alexey Tourbin wrote:
> Если класть хедеры в отдельные файлы, то оверхед в связи с этим будет
> очень большой (это и inode'ы, и перекачка информации о файлах). На
> самом деле если pkglist не сжимать, то rsync прокачает его гораздо
> быстрее (особенно если отсортировать хедеры по %{SOURCERPM}).
> Средний размер хедера в pkglist 2K, если сделать rsync
> --block-size=1K то мы возьмём почти чистый diff (с оверхедом того же
> порядка, что и при передаче хедеров по отдельности). Но почему-то
> почти все используют ftp, и ради них pkglist бзипют.
Алексей,
поделитесь, пожалуйста, как настроить apt, чтобы это делать? Или Вы
имеете в виду напрямую rsync-ом?
С уважением,
--
Ildar Mulyukov, free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
Jabber: ildar@jabber.ru
ICQ: 4334029
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 4:02 ` Ildar Mulyukov
@ 2008-05-19 4:53 ` Alexey Tourbin
2008-05-19 10:26 ` Ildar Mulyukov
2008-05-20 12:27 ` Alexander Bokovoy
0 siblings, 2 replies; 35+ messages in thread
From: Alexey Tourbin @ 2008-05-19 4:53 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1835 bytes --]
On Mon, May 19, 2008 at 10:02:03AM +0600, Ildar Mulyukov wrote:
> On 18.05.2008 05:03:31, Alexey Tourbin wrote:
> >Если класть хедеры в отдельные файлы, то
> >оверхед в связи с этим будет очень
> >большой (это и inode'ы, и перекачка
> >информации о файлах). На самом деле если
> >pkglist не сжимать, то rsync прокачает его
> >гораздо быстрее (особенно если
> >отсортировать хедеры по %{SOURCERPM}).
> >Средний размер хедера в pkglist 2K, если
> >сделать rsync --block-size=1K то мы возьмём почти
> >чистый diff (с оверхедом того же порядка,
> >что и при передаче хедеров по
> >отдельности). Но почему-то почти все
> >используют ftp, и ради них pkglist бзипют.
>
> Алексей,
>
> поделитесь, пожалуйста, как настроить apt,
> чтобы это делать? Или Вы имеете в виду
> напрямую rsync-ом?
Дело в том, что rsync(1) как раз очень хорошо подохдит для
синхронизации бинарных (и вообще любых) файлов, в которых некоторые
куски меняются (возможно, со смещением), а некоторые куски остаются
без изменения (возможно, тоже со смещением). Почитайте где-нибудь
статью этого гуру я не помню как его на букву T тоже. Там очень
хорошо описано, как файл разбивается на маленькие блоки, и на стороне
клиента вычисляются всевозможные хеши для любых смещений.
Поняв это, Вам также станят ясно (как Божий день), что совсем не нужен
ещё один протокол для синхронизации кусков чего-то с другими кусками
ещё чего-то. Достаточно одного хорошего протокола, коим является rsync.
Проблема только в том, что rsync "не берёт" сжатые файлы. Это связано
с понятием об этнропии, и это очень долго объяснять. Суть в том что
сжатие полностью уничтожает буквально совпадение блоков, которое нужно
для rsync.
В общем, дилемма простая: либо синхронизируем разжатое, либо полностью
скачиваем сжатое.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 4:53 ` Alexey Tourbin
@ 2008-05-19 10:26 ` Ildar Mulyukov
2008-05-19 10:35 ` Andrey Rahmatullin
2008-05-20 12:27 ` Alexander Bokovoy
1 sibling, 1 reply; 35+ messages in thread
From: Ildar Mulyukov @ 2008-05-19 10:26 UTC (permalink / raw)
To: devel
On 19.05.2008 10:53:14, Alexey Tourbin wrote:
> On Mon, May 19, 2008 at 10:02:03AM +0600, Ildar Mulyukov wrote:
> > On 18.05.2008 05:03:31, Alexey Tourbin wrote:
>>> Если класть хедеры в отдельные файлы, то оверхед в связи с этим
>>> будет очень большой (это и inode'ы, и перекачка информации о
>>> файлах). На самом деле если pkglist не сжимать, то rsync прокачает
>>> его гораздо быстрее (особенно если отсортировать хедеры по
>>> %{SOURCERPM}). Средний размер хедера в pkglist 2K, если сделать
>>> rsync --block-size=1K то мы возьмём почти чистый diff (с оверхедом
>>> того же порядка, что и при передаче хедеров по отдельности). Но
>>> почему-то почти все используют ftp, и ради них pkglist бзипют.
>> Алексей, поделитесь, пожалуйста, как настроить apt, чтобы это
>> делать? Или Вы имеете в виду напрямую rsync-ом?
>
> Дело в том, что rsync(1) как раз очень хорошо подохдит для
> синхронизации бинарных (и вообще любых) файлов, в которых некоторые
> куски меняются (возможно, со смещением), а некоторые куски остаются
> без изменения (возможно, тоже со смещением). Почитайте где-нибудь
> статью этого гуру я не помню как его на букву T тоже. Там очень
> хорошо описано, как файл разбивается на маленькие блоки, и на стороне
> клиента вычисляются всевозможные хеши для любых смещений.
> Поняв это, Вам также станят ясно (как Божий день), что совсем не
> нужен ещё один протокол для синхронизации кусков чего-то с другими
> кусками ещё чего-то. Достаточно одного хорошего протокола, коим
> является rsync.
А! Спасибо. Как работает rsync - я уже немного в курсе.
> Проблема только в том, что rsync "не берёт" сжатые файлы. Это
> связано с понятием об этнропии, и это очень долго объяснять. Суть в
> том что сжатие полностью уничтожает буквально совпадение блоков,
> которое нужно для rsync.
> В общем, дилемма простая: либо синхронизируем разжатое, либо полностью
> скачиваем сжатое.
Хотите "трилемму"? Можно ещё впаять поддержку rsync в apt-get update.
Ильдар
--
Ildar Mulyukov, free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
Jabber: ildar@jabber.ru
ICQ: 4334029
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 10:26 ` Ildar Mulyukov
@ 2008-05-19 10:35 ` Andrey Rahmatullin
2008-05-19 10:41 ` Pavlov Konstantin
0 siblings, 1 reply; 35+ messages in thread
From: Andrey Rahmatullin @ 2008-05-19 10:35 UTC (permalink / raw)
To: devel
On Mon, May 19, 2008 at 04:26:02PM +0600, Ildar Mulyukov wrote:
> Хотите "трилемму"? Можно ещё впаять поддержку rsync в apt-get update.
apt-get install apt-rsync
Не знаю, правда, как он работает.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 10:35 ` Andrey Rahmatullin
@ 2008-05-19 10:41 ` Pavlov Konstantin
2008-05-19 10:43 ` Andrey Rahmatullin
2008-05-19 10:53 ` Aleksey Avdeev
0 siblings, 2 replies; 35+ messages in thread
From: Pavlov Konstantin @ 2008-05-19 10:41 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 420 bytes --]
On Mon, May 19, 2008 at 10:35:46AM +0000, Andrey Rahmatullin wrote:
> On Mon, May 19, 2008 at 04:26:02PM +0600, Ildar Mulyukov wrote:
> > Хотите "трилемму"? Можно ещё впаять поддержку rsync в apt-get update.
> apt-get install apt-rsync
> Не знаю, правда, как он работает.
Нормально работает, rsync -- один из apt methods становится.
--
[...] любители ругаться не читают документацию :-)
-- aen in devel@
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 10:41 ` Pavlov Konstantin
@ 2008-05-19 10:43 ` Andrey Rahmatullin
2008-05-19 10:53 ` Aleksey Avdeev
1 sibling, 0 replies; 35+ messages in thread
From: Andrey Rahmatullin @ 2008-05-19 10:43 UTC (permalink / raw)
To: devel
On Mon, May 19, 2008 at 02:41:07PM +0400, Pavlov Konstantin wrote:
> Нормально работает, rsync -- один из apt methods становится.
Знаю, даже юзал. Я про экономию и прочее.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 10:41 ` Pavlov Konstantin
2008-05-19 10:43 ` Andrey Rahmatullin
@ 2008-05-19 10:53 ` Aleksey Avdeev
1 sibling, 0 replies; 35+ messages in thread
From: Aleksey Avdeev @ 2008-05-19 10:53 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 572 bytes --]
Pavlov Konstantin пишет:
> On Mon, May 19, 2008 at 10:35:46AM +0000, Andrey Rahmatullin wrote:
>> On Mon, May 19, 2008 at 04:26:02PM +0600, Ildar Mulyukov wrote:
>>> Хотите "трилемму"? Можно ещё впаять поддержку rsync в apt-get update.
>> apt-get install apt-rsync
>> Не знаю, правда, как он работает.
>
> Нормально работает, rsync -- один из apt methods становится.
Не совсем нормально: по apt-get update каждый раз _полностью_
выкачивает файлы описания репозитария, даже если они не менялись. (Для
ftp -- это не так.)
--
С уважением. Алексей.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 544 bytes --]
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-17 19:00 ` Alexey Tourbin
` (2 preceding siblings ...)
2008-05-18 2:07 ` Alexey Tourbin
@ 2008-05-20 2:34 ` Alexey Morozov
3 siblings, 0 replies; 35+ messages in thread
From: Alexey Morozov @ 2008-05-20 2:34 UTC (permalink / raw)
To: ALT Linux Team development discussions
В сообщении от Sunday 18 May 2008 02:00:34 Alexey Tourbin написал(а):
> На самом деле то что через apt нельзя посмотреть изменения в пакете
> это одна из основных претензий к апту. Александр Боковой ещё
> в х**-знает-каком году писал, как он в Сане показывал наш synaptic,
> и первое что у него саны спросили это где посмотреть изменения
> обновляемых пакетов.
Да, кстати. Но это, кстати, особенность именно [нашего] apt-rpm, у
дебианоубунтовцев в этом месте всё нормально, там изменения еще и по
приоритету сортируются, что крайне полезно енд-лузеру, вроде меня, любящего
красивые окошки и дружелюбные программки.
Опять же, часть изменений, вроде чистых секьюрити-фиксов (т.е. по определению,
консервативных и точечных) можно втягивать, не задумываясь, а вот уже
масштабные изменения сортировать, где тянуть сразу, а где - ждать следующих
порций обновлений.
Хотя, конечно, приоритетность изменений, видимо, должна быть более
комплексной. Что-то типа "характер изменений" (security, bugfix, enhancement,
или всё вместе) и "величина изменений" (minor, intermediate, major). Только в
этом случае "величина изменений" - это не просто константа для данного
пакета, а некоторая кумулятивная характеристика, складывающаяся из характера
изменений самого пакета и характера изменений сборочного окружения.
Что касается того, "сколько времени" хранить ченджлог в апте, то, думаю, было
бы уместно оставлять не более одного major изменения.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [devel] changelogs for apt repo
2008-05-19 4:53 ` Alexey Tourbin
2008-05-19 10:26 ` Ildar Mulyukov
@ 2008-05-20 12:27 ` Alexander Bokovoy
1 sibling, 0 replies; 35+ messages in thread
From: Alexander Bokovoy @ 2008-05-20 12:27 UTC (permalink / raw)
To: ALT Linux Team development discussions
19.05.08, Alexey Tourbin<at@altlinux.ru> написал(а):
> Проблема только в том, что rsync "не берёт" сжатые файлы. Это связано
> с понятием об этнропии, и это очень долго объяснять. Суть в том что
> сжатие полностью уничтожает буквально совпадение блоков, которое нужно
> для rsync.
На самом деле, если жать gzip --rsyncable, то будут блоки по 100к, что
как раз и помогает rsync. В случае bzip2 блоки будут 900к (--best или
по умолчанию) или кратны 100к (-1, -2 и так далее -- это 100к, 200к,
... до 900к с -9). То есть, если для rsync указать размер блока в
размер блока, с которым сжимались данные при помощи bzip2, то
производительность будет выше, чем без понимания размера блока.
--
/ Alexander Bokovoy
^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2008-05-20 12:27 UTC | newest]
Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-17 5:34 [devel] changelogs for apt repo Alexey Tourbin
2008-05-17 9:50 ` Евгений Терешков
2008-05-17 12:06 ` Alexey Gladkov
2008-05-17 13:23 ` Andrey Rahmatullin
2008-05-17 13:54 ` Alexey Gladkov
2008-05-17 19:00 ` Alexey Tourbin
2008-05-17 20:01 ` Led
2008-05-17 19:55 ` Andrey Rahmatullin
2008-05-17 21:16 ` Led
2008-05-17 21:09 ` Andrey Rahmatullin
2008-05-18 6:34 ` Kirill Maslinsky
2008-05-17 20:50 ` Alexey Tourbin
2008-05-17 21:58 ` Alexey Gladkov
2008-05-17 21:46 ` Andrey Rahmatullin
2008-05-17 22:14 ` Alexey Gladkov
2008-05-17 22:00 ` Andrey Rahmatullin
2008-05-17 22:21 ` Alexey Gladkov
2008-05-17 22:10 ` Andrey Rahmatullin
2008-05-17 22:32 ` Alexey Gladkov
2008-05-17 22:45 ` Sergey Bolshakov
2008-05-17 23:03 ` Alexey Tourbin
2008-05-19 4:02 ` Ildar Mulyukov
2008-05-19 4:53 ` Alexey Tourbin
2008-05-19 10:26 ` Ildar Mulyukov
2008-05-19 10:35 ` Andrey Rahmatullin
2008-05-19 10:41 ` Pavlov Konstantin
2008-05-19 10:43 ` Andrey Rahmatullin
2008-05-19 10:53 ` Aleksey Avdeev
2008-05-20 12:27 ` Alexander Bokovoy
2008-05-18 2:07 ` Alexey Tourbin
2008-05-18 2:25 ` Alexey Tourbin
2008-05-18 9:26 ` Alexey Gladkov
2008-05-18 21:35 ` Alexey Tourbin
2008-05-18 22:26 ` Alexey Gladkov
2008-05-20 2:34 ` Alexey Morozov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git