ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: Re: [devel] О ранижировании пакетов
Date: Fri, 2 Jun 2006 07:07:08 +0400
Message-ID: <20060602030708.GE8164@localhost.localdomain> (raw)
In-Reply-To: <20060129134619.GA22923@mithraen.dimline.ru>

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

On Sun, Jan 29, 2006 at 04:46:20PM +0300, Денис Смирнов wrote:
> Таки написал я код для ранжирования пакетов по важности и автоматического
> выявления наиболее требующих внимания участков.
> 
> Проблема в том, что сейчас я подразумеваю одинаковую важность всех пакетов
> изначально, что явно не соответствует действительности.
> 
> Соответственно у меня вопрос -- какие пакеты мы должны считать наиболее
> важными _без учета зависимостей_? То есть, скажем, с этой точки зрения
> glibс не важный пакет -- сам по себе он никому не нужен, а, скажем,
> какой-нибудь bc может быть для кого-то один из самых важных пакетов, так
> как его использует какой-нибудь ОченьВажныйСкрипт.
> 
> Сейчас я могу легко получить список пакетов, требующих внимания, по своему
> списку используемых в работе пакетов.

Я тоже думал над этой задачей.  Что касается сборочных зависимостей, то,
оказывается, существует неожиданное решение: список установленных
пакетов можно извлечь из лога пересборки.  Поскольку логи пересборки
репозитария существуют, остается только сосчитать пакеты, которые встают
в чрут (в логах указаны все пакеты, которые встают в чрут, за вычетом
базовой сборочной среды, т.е. basesystem+rpm-build; последнее
обстоятельство можно рассматривать и как преимущество).

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

buildlog_uris()
{
	find "$@" -type f -print0 |xargs -r0 gzip -cdfq |
		awk '/^Preparing packages for installation/,/^Installing .*[.]src[.]rpm$/ {
			if (/^[[:alnum:]][[:graph:]]*[[:alnum:]]-(alt|ipl)[[:graph:]]*$/ && !/[.]rpm$/)
				print }' |sort |uniq -c |awk '{print $1 "\t" $2 }' |sort -n
}

(Название функции buildlog_uris интуитивно не понятно, потому что эта
функция используется в рамках решения другой задачи.)

[at@basalt ~]$ buildlog_uris /raid/beehive/success |tail -33
934     libfreetype-devel-2.2.1-alt2
938     libXaw-1.0.2-alt1
940     libxml2-2.6.23-alt2
940     xml-common-0.6.3-alt11
974     libXp-1.0.0-alt3
985     libXmu-1.0.1-alt1
1013    libXinerama-1.0.1-alt3
1049    libjpeg-6b-alt7
1054    libXcursor-1.1.6-alt1
1056    libXrandr-1.1.1-alt1
1059    libXfixes-4.0-alt2
1071    libX11-devel-1.0.0-alt6
1072    libXau-devel-1.0.1-alt1
1073    libXdmcp-devel-1.0.1-alt1
1075    libXft-2.1.8.2-alt5
1078    libXi-1.0.1-alt1
1086    libXpm-3.5.5-alt1
1092    libXt-1.0.2-alt1
1093    libXrender-0.9.1-alt1
1139    libssl-0.9.7g-alt3
1145    libSM-1.0.1-alt1
1149    xorg-x11-proto-devel-7.1.0-alt1
1150    libICE-1.0.1-alt1
1219    zlib-devel-1.2.3-alt3
1230    libXext-1.0.0-alt4
1335    libpng3-1.2.8-alt3
1349    fontconfig-2.3.2-alt8
1399    libfreetype-2.2.1-alt2
1463    libexpat-2.0.0-alt3.1
1539    libX11-1.0.0-alt6
1541    libXdmcp-1.0.1-alt1
1619    libstdc++4.1-4.1.1-alt1
1660    libXau-1.0.1-alt1
[at@basalt ~]$ 

Соответственно, если какой-либо пакет из этого списка станет
неустанавливаемым (допустим, вследствие анмета), то пересборка сизифа
станет практический невозможной.  Опять же, за вычетом базовой сборочной
среды.  Но в случае с базовой сборочной средой очевидно, что если она
разломана, то собрать вообще ничего не удастся.

Поскольку логи сборки содержат результаты find-requires, то становится
также возможным произвести взвешенное иерархическое ранжирование
реальных (а не сборочных) зависимостей.  Это несколько сложнее, но не
намного (основная проблема состоит в том, чтоб отмаппить виртуальные
пакеты в реальные).  Поскольку я сейчас хочу выпить пива, я не буду до
конца показывать, как это сделать... Ж)  Суть опять же в том, что
специально делать ничего не нужно.

buildlog_deps()
{
	find "$@" -type f -print0 |xargs -r0 gzip -cdfq |
		awk  -F'[:,] +' '/^Processing files:/ { pkg = $NF }
			/^PreReq:|^Requires([(].+[)])?:|^Provides:|^Obsoletes:/ {
				if (pkg) for(i=2;i<=NF;i++) print pkg "\t" $1 "\t" $i }' |sort -u
}

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

  parent reply	other threads:[~2006-06-02  3:07 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-29 13:46 Денис Смирнов
2006-01-30  9:37 ` [devel] " Michael Shigorin
2006-01-30 12:01   ` Денис Смирнов
2006-01-30 14:28     ` Michael Shigorin
2006-01-30 14:54       ` Денис Смирнов
2006-01-31 13:53     ` [devel] " Anton Farygin
2006-01-31 14:41       ` [devel] " Michael Shigorin
2006-02-01  7:41         ` Anton Farygin
2006-02-01  9:45           ` Денис Смирнов
2006-02-01 11:03             ` [devel] " Anton Farygin
2006-02-01 13:20               ` Денис Смирнов
2006-02-01 13:29                 ` [devel] " Anton Farygin
2006-02-01 14:59                   ` Денис Смирнов
2006-02-01 15:04                     ` [devel] " Anton Farygin
2006-06-02  3:07 ` Alexey Tourbin [this message]
2006-06-02  3:54   ` [devel] " Alexey Tourbin
2006-06-02  4:06   ` [devel] О ранжировании пакетов Slava Semushin
2006-06-02  4:39     ` Alexey Tourbin
2006-06-02  6:36       ` [devel] [JT] " Michael Shigorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060602030708.GE8164@localhost.localdomain \
    --to=at@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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