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 --]
next prev 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