ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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: Alexey Tourbin @ 2008-05-17  5:34 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 5348 bytes --]

Я реализовал включение changelog'ов пакетов в репозитарий и показ их
в 'apt-cache show' (см. мой apt.git).  Работать должно примерно вот так:

$ ./aptbox/apt-cache show perl-YAML |обрезать_домен_мыла
Package: perl-YAML
Section: Development/Perl
Installed Size: 142319
Maintainer: Alexey Tourbin <at@altlinux>
Version: 0.66-alt1
Build Date: Sat May 17 08:52:46 2008
Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1), rpmlib(VersionedDependencies) (<= 3.0.3-1)
Depends: /usr/bin/perl, perl(Data/Dumper.pm), perl(Term/ReadLine.pm), perl(base.pm), perl(constant.pm), perl(overload.pm), perl(warnings.pm), perl-base (>= 1:5.6.1)
Provides: perl(YAML.pm) (= 0.660), perl(YAML/Base.pm), perl(YAML/Dumper.pm), perl(YAML/Dumper/Base.pm), perl(YAML/Error.pm), perl(YAML/Loader.pm), perl(YAML/Loader/Base.pm), perl(YAML/Marshall.pm), perl(YAML/Node.pm), perl(YAML/Tag.pm), perl(YAML/Types.pm), perl-YAML (= 0.66-alt1)
Architecture: noarch
Size: 48657
MD5Sum: 14f76d223da25a4036a8f771c67bb518
Filename: perl-YAML-0.66-alt1.noarch.rpm
Description: YAML Ain't Markup Language
 The YAML.pm module implements a YAML Loader and Dumper based on the
 YAML 1.0 specification.  YAML is a generic data serialization language
 that is optimized for human readability.  It can be used to express the
 data structures of most modern programming languages (including Perl).
Changelog:
 * Sat May 17 2008 Alexey Tourbin <at@altlinux> 0.66-alt1
 - 0.65 -> 0.66
 * Sat Aug 18 2007 Alexey Tourbin <at@altlinux> 0.65-alt1
 - 0.62 -> 0.65
 * Wed Dec 20 2006 Alexey Tourbin <at@altlinux> 0.62-alt1
 - 0.60 -> 0.62
 - fixed dependency on B::Deparse (cpan #24018)

Package: perl-YAML
Section: Development/Perl
Installed Size: 142138
Maintainer: Alexey Tourbin <at@altlinux>
Version: 0.65-alt1
Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1), rpmlib(VersionedDependencies) (<= 3.0.3-1)
Depends: perl(Data/Dumper.pm), perl(Term/ReadLine.pm), perl(base.pm), perl(constant.pm), perl(overload.pm), perl(warnings.pm), perl-base (>= 1:5.6.1)
Provides: perl(YAML.pm) (= 0.650), perl(YAML/Base.pm), perl(YAML/Dumper.pm), perl(YAML/Dumper/Base.pm), perl(YAML/Error.pm), perl(YAML/Loader.pm), perl(YAML/Loader/Base.pm), perl(YAML/Marshall.pm), perl(YAML/Node.pm), perl(YAML/Tag.pm), perl(YAML/Types.pm), perl-YAML (= 0.65-alt1)
Architecture: noarch
Size: 48585
MD5Sum: 5c51993475a98083561540d9c5ea4a68
Filename: perl-YAML-0.65-alt1.noarch.rpm
Description: YAML Ain't Markup Language
 The YAML.pm module implements a YAML Loader and Dumper based on the
 YAML 1.0 specification.  YAML is a generic data serialization language
 that is optimized for human readability.  It can be used to express the
 data structures of most modern programming languages (including Perl).

$ 

Здесь 'apt-cache show' показывает два пакета (отличаются версии).
Первый пакет, который я только что собрал -- из моего локального
репозитария.  Этот репозитарий был сгенерирован с включением
changelog'ов, и поэтому 'apt-cache show' показывает changelog.
Второй пакет -- из Сизифа, который сгенерирован без changelog'ов.

Теперь встает вопрос, сколько штук changelog entries копировать при
генерации репозитария, если не все.  Я сначала сделал несколько опций
управления количеством штук, но в конце решил оставить всего одну:

   --changelog-since=DATE     Save package changelogs; copy changelog entries
                              only newer than DATE, and also one entry before
                              the DATE (if available)

Поясню работу этой опции при помощи рисунка:

                 +    +          +    +
------------------|------------------------> t
  *    * *    *  DATE

Здесь на шкале времени плюсами отмечены changelog entries, которые
копируются в файл base/pkglist.*, а звёздочками -- которые не копируются.
То есть, при такой схеме мы знаем последнюю запись в changelog'е пакета
по состоянию на час X, от которого мы отсчитываем, а также все
последующие записи.  Кроме того, копируется как минимум одна запись,
так что команде 'apt-cache show' всегда есть что показать.

Кандидаты на час X следующие:
1) 2007-01-01 -- интуитивно понятная дата;
2) 2007-04-?? -- когда отфоркался branch 4.0.

Теперь остаётся выяснить, сколько это занимает места.

Обычная генерация сизифа:

$ 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 пакета ДО скачивания и установки.

[-- 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  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)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1506 bytes --]

<#secure method=pgp mode=sign>
Alexey Tourbin пишет:

> Я реализовал включение changelog'ов пакетов в репозитарий и показ их
> в 'apt-cache show' (см. мой apt.git).  Работать должно примерно вот так:

(наглядные объяснения поскипаны)

Я одного не понял: если есть несколько версий (2, 3, 5, 10) одного пакета
из двух (и более) репозиториев, созданных с включением в них changelog'ов,
то apt-cache show <pkgname> покажет один лог для какой-то (например, самой
свежей) версий или все для всех версий (или как-то иначе?)?

И ещё: возможно, имеет смысл сделать включаемым весь changelog (разумеется,
с каким-то разумным лимитом по объёму)? Тогда в вывод попадут записи об
изменениях пакетов из разряда "залил и забыл, just works", которые в
противном случае потерялись бы.

P.S.: не делал выборку по таким пакетам, просто первая пришедшая мысль.

-- 
С уважением, Терешков Евгений.
Jabber ID: evg@altlinux.org, evg_krsk@jabber.ru

[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]

^ 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: Alexey Gladkov @ 2008-05-17 12:06 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Alexey Tourbin wrote:
> $ 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' заметно
> увеличивается (примерно на треть).  

Это ужасно.Для меня это слишком дорогая плата. Мне кажется что pkglist 
был придуман не для того как ты его используешь.

Ты идёшь по пути перекачивания на пользовательскую машину
sisyphus/<arch>/rpmdb ... может уже так и сделать ?

> Я считаю это приемлемой платой
> за удовольствие просмотреть changelog пакета ДО скачивания и установки.

Может имеет смысл добавлять lastchange? Ведь интересно видеть что 
изменилось в последней версии чтобы понять ставить её или нет, а не в 
какой-то предыдущей.

-- 
Rgrds, legion



^ 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: Andrey Rahmatullin @ 2008-05-17 13:23 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 645 bytes --]

On Sat, May 17, 2008 at 04:06:09PM +0400, Alexey Gladkov wrote:
> Это ужасно.Для меня это слишком дорогая плата. Мне кажется что pkglist был 
> придуман не для того как ты его используешь.
+1

> Может имеет смысл добавлять lastchange? Ведь интересно видеть что 
> изменилось в последней версии чтобы понять ставить её или нет, а не в 
> какой-то предыдущей.
Это если постоянно обновляться.

-- 
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):

Не надо заходить как root на 5 runlevel'е. Вы же не хотите чтобы Вам
снесло систему, например, после просмотра konqueror'ом некоторого сайта ;)
		-- inger 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 13:23   ` Andrey Rahmatullin
@ 2008-05-17 13:54     ` Alexey Gladkov
  0 siblings, 0 replies; 35+ messages in thread
From: Alexey Gladkov @ 2008-05-17 13:54 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Andrey Rahmatullin wrote:
> Это если постоянно обновляться.

Если хранить весь changelog то pkglist будет увеличиваться в размере 
причём постоянно и независимо от количества пакетов. При этом 
*большая* часть информации будет не нужна.

Если хранить не всё, то нужно придумывать сколько времени отслеживать 
(как и сказал Алексей).

-- 
Rgrds, legion



^ 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: Alexey Tourbin @ 2008-05-17 19:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2360 bytes --]

On Sat, May 17, 2008 at 04:06:09PM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >$ 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' заметно
> >увеличивается (примерно на треть).  
> 
> Это ужасно.Для меня это слишком дорогая 
> плата. Мне кажется что pkglist был придуман 
> не для того как ты его используешь.

Но там уже есть description (а не только summary).  Так что для чего
предназначен pkglist это вопрос неоднозначный.  В pkglist вообще-то
просто копируются хедеры (и их можно читать прямо в цикле через
headerRead), но при копировании хедеры основательно урезаются,
исключительно с целью экономии места.

На самом деле то что через apt нельзя посмотреть изменения в пакете
это одна из основных претензий к апту.  Александр Боковой ещё
в х**-знает-каком году писал, как он в Сане показывал наш synaptic, 
и первое что у него саны спросили это где посмотреть изменения
обновляемых пакетов.

Какая плата тебя бы устроила?  Думаю что плату можно будет немного
уменьшить, если сначала отсортировать пакеты по %{SOURCERPM}, а уже
потом выгонять хедеры.  Тогда bzip2 лучше сожмёт одинаковые changelog'и
подряд идущих подпакетов.

И это будет опция.  Если ты генерируешь свой репозитарий с жесткими
ограничениями на размер, то это можно бдует отключить.

> Ты идёшь по пути перекачивания на 
> пользовательскую машину
> sisyphus/<arch>/rpmdb ... может уже так и сделать ?

Есть такая дилемма.

> >Я считаю это приемлемой платой
> >за удовольствие просмотреть changelog 
> >пакета ДО скачивания и установки.
> 
> Может имеет смысл добавлять lastchange? Ведь 
> интересно видеть что изменилось в 
> последней версии чтобы понять ставить её 
> или нет, а не в какой-то предыдущей.

Но ведь мы можем обновляться не с предпоследней версии на последнюю,
а с ещё более ранней.  То есть мы можем пропустить промежуточное важное
изменение.  Поэтому есть наибольший смысл сохранять 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 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: Andrey Rahmatullin @ 2008-05-17 19:55 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 478 bytes --]

On Sat, May 17, 2008 at 11:01:08PM +0300, Led wrote:
> А что, кого-то спрашивали, нужен ли там description? ИМХО не нужен и он.
А как выяснять, тот ли это пакет, что нужен?
Плюсм apt-cache search особого смысла не имеет без дескрипшенов.

-- 
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):

<Ktirf> wRAR: Вот ты что сделал, чтобы на UTF-8 перейти?
<wRAR> Ktirf: .i18n поправил. а что?
<combr> wRAR: нет, а глобально? в плане общественной жизни? ;))

[-- 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 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: Led @ 2008-05-17 20:01 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Saturday, 17 May 2008 22:00:34 Alexey Tourbin написав:
> > Это ужасно.Для меня это слишком дорогая
> > плата. Мне кажется что pkglist был придуман
> > не для того как ты его используешь.
>
> Но там уже есть description (а не только summary).

А что, кого-то спрашивали, нужен ли там description? ИМХО не нужен и он.

-- 
Led

^ 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: Alexey Tourbin @ 2008-05-17 20:50 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 520 bytes --]

On Sat, May 17, 2008 at 11:01:08PM +0300, Led wrote:
> Saturday, 17 May 2008 22:00:34 Alexey Tourbin написав:
> > > Это ужасно.Для меня это слишком дорогая
> > > плата. Мне кажется что pkglist был придуман
> > > не для того как ты его используешь.
> >
> > Но там уже есть description (а не только summary).
> 
> А что, кого-то спрашивали, нужен ли там description? ИМХО не нужен и он.

Для apt-cache search нужен.  Кстати, если в поиск включить changelog'и,
то можно будет искать apt-cache search CVE и т.п.

[-- 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: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: Andrey Rahmatullin @ 2008-05-17 21:09 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 613 bytes --]

On Sun, May 18, 2008 at 12:16:21AM +0300, Led wrote:
> Вменяемый Summary - достаточно.
Наивно enough.

> > Плюсм apt-cache search особого смысла не имеет без дескрипшенов.
> См. выше. Но яопять же - это ИМХО.
А это просто бред.
См. многочисленные техники прописывания всякой полезной инфы в дескрипшен
именно с целью релевантного apt-cache search.

-- 
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):

> На самом деле реально нужен хороший и безглючный биллинг ;)
> Легко настраиваемый, удобный и функциональный.
И бесплатным сертификатом госсвязи ;)
		-- lakostis in sysadmins@

[-- 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: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: Led @ 2008-05-17 21:16 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Saturday, 17 May 2008 22:55:45 Andrey Rahmatullin написав:
> On Sat, May 17, 2008 at 11:01:08PM +0300, Led wrote:
> > А что, кого-то спрашивали, нужен ли там description? ИМХО не нужен и он.
>
> А как выяснять, тот ли это пакет, что нужен?

Вменяемый Summary - достаточно.

> Плюсм apt-cache search особого смысла не имеет без дескрипшенов.

См. выше. Но яопять же - это ИМХО.

-- 
Led

^ 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