[devel] Q: contents_index content ?

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Окт 3 08:33:09 MSD 2008


On Wed, Oct 01, 2008 at 12:43:28PM +0400, Vitaly Ostanin wrote:
> Скажите, а как создаются файлы contents_index в 
> репозиториях и с какой целью?

Создаются в /usr/bin/sisyphus_gen_contents,
используются в /usr/lib/rpm/find-package с целью
отображения пути файла в имя зависимости.

> То, что они содержат кучу строк вида
> /file /file
> вместо
> /file package
> , ещё терпимо, пакеты можно выдрать из 
> pkglist апта.

Запись '/file /file', означает, что файл принадлежт более чем одному
пакету (то есть двум или более пакетам с разными названиями).  Поэтому
отображение файл -> зависимость принимает вид файл0 -> файл0.

> Но вот в пакете service есть каталог 
> /etc/rc.d/init.d. А в contents_index (Sisyphus/i586/base) записи 
> об этом нет. Так и должно быть?

$ fgrep $'/etc/rc.d/init.d\t' /ALT/Sisyphus/i586/base/contents_index 
/etc/rc.d/init.d        /etc/rc.d/init.d
$

Каталогом /etc/rc.d/init.d владеют несколько пакетов.

$ bzcat /ALT/Sisyphus/i586/base/pkglist.classic.bz2 |./pkglist-query '[%{FILENAMES}\t%{NAME}\n]' - |fgrep  $'/etc/rc.d/init.d\t'
/etc/rc.d/init.d        3proxy
/etc/rc.d/init.d        atslog
/etc/rc.d/init.d        ez-ipupdate
/etc/rc.d/init.d        service
$ 
----------- следующая часть -----------
#include <rpmlib.h>
#include <stdio.h>

///extern int _rpmio_debug = 1;

int main(int argc, const char *argv[])
{
    const char *progname = argv[0];
    if (argc != 3) {
	fprintf(stderr, "Usage: %s QUERY pkglist", progname);
	exit(2);
    }
    const char *query = argv[1], *pkglist = argv[2];
    FD_t Fd = Fopen(pkglist, "r");
    if (Ferror(Fd)) {
	fprintf(stderr, "%s: %s: %s\n", progname, pkglist, Fstrerror(Fd));
	exit(1);
    }
    Header h;
    while ((h = headerRead(Fd, HEADER_MAGIC_YES))) {
	char *str = headerSprintf(h, query, rpmTagTable, rpmHeaderFormats, NULL);
	if (str) {
	    fputs(str, stdout);
	    str = _free(str);
	}
	headerFree(h);
    }
    Fclose(Fd);
    return 0;
}

/* ex:set ts=8 sts=4 sw=4 noet: */
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/20081003/f3049907/attachment-0002.bin>


Подробная информация о списке рассылки Devel