[devel] changelogs for apt repo
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Май 17 09:34:27 MSD 2008
Я реализовал включение 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 пакета ДО скачивания и установки.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080517/ba19bce2/attachment-0002.bin>
Подробная информация о списке рассылки Devel