From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: [devel] проблемы с поиском зависимостей [2]
Date: Mon, 12 Mar 2007 15:36:30 +0300
Message-ID: <20070312123630.GB7403@localhost.localdomain> (raw)
[-- Attachment #1: Type: text/plain, Size: 4232 bytes --]
On Thu, Mar 01, 2007 at 11:31:09PM +0300, Alexey Tourbin wrote:
> 1) вариации шарпбанга можно использовать для отключения распознавания.
> 2) find-requires и find-provides не модульные.
Я начал решал вторую проблему, и оказалось, что в процессе решения
второй проблемы в значительной степени решается и первая проблема.
Я выложил в git.alt:/people/at/packages/rpm.git бранч mod. Основные
изменения там в основном закончены (кроме тех, которые явно не
закончены; такие, как остатки старого кода в find-requires и
find-provides).
Вкратце, как это работает. find-requires и find-provides запускает
file(1) и скармливает его вывод в фильтры .req.files и .prov.files (от
идеи общего .files для .req и .prov пришлось отказаться). Дальше
фильтры выводят список файлов, и этот список файлов скармливается
в .req или .prov.
Выглядит это вполне даже благовидно.
Примеры.
Вывести список шелл-файлов для поиска зависимостей из пакета rpm-utils.
$ rpm -ql rpm-utils |file -NF$'\t' -f - |/usr/lib/rpm/shell.req.files
/usr/bin/add_changelog
/usr/bin/buildreq
/usr/bin/cleanup_spec
/usr/bin/compare_packages
/usr/bin/filereq
/usr/bin/packagereq
/usr/bin/rebuild_package
/usr/bin/rebuild_packages
/usr/bin/stamp_spec
/usr/share/buildreqs/filter_strace
/usr/share/buildreqs/strace_files
$
Найти зависимости в shell-файлах из пакета rpm-utils.
$ rpm -ql rpm-utils |file -NF$'\t' -f - |/usr/lib/rpm/shell.req.files |/usr/lib/rpm/shell.req |sort -u
coreutils
diffutils
ed
findutils
gawk
grep
perl-base
rpm
rpm-utils
sed
strace
$
Поскольку нет билдрута, то "естественным образом" появляется зависимость
на rpm-utils.
Если в req/prov скриптах использовать опцию --verbose, то можно узнать
что-нибудь интересное.
$ rpm -ql rpm-utils |file -NF$'\t' -f - |/usr/lib/rpm/shell.req.files |/usr/lib/rpm/shell.req -v 2>&1| head
shell.req: /usr/bin/add_changelog: cat -> /bin/cat -> ... (via which)
shell.req: /usr/bin/add_changelog: /bin/cat -> coreutils (via rpmdb)
shell.req: /usr/bin/add_changelog: ed -> /bin/ed -> ... (via which)
shell.req: /usr/bin/add_changelog: /bin/ed -> ed (via rpmdb)
shell.req: /usr/bin/add_changelog: grep -> /bin/grep -> ... (via which)
shell.req: /usr/bin/add_changelog: /bin/grep -> grep (via rpmdb)
shell.req: /usr/bin/add_changelog: rm -> /bin/rm -> ... (via which)
shell.req: /usr/bin/add_changelog: /bin/rm -> coreutils (via rpmdb)
shell.req: /usr/bin/add_changelog: sed -> /bin/sed -> ... (via which)
shell.req: /usr/bin/add_changelog: /bin/sed -> sed (via rpmdb)
$
Опция -vv может сказать ещё больше интересного, а -vvv для особо
интересующихся включит -x.
Аналогично работают другие req/prov скрипты.
$ rpm -ql rpm-utils |file -NF$'\t' -f - |/usr/lib/rpm/lib.req.files |/usr/lib/rpm/lib.req -vv
lib.req: processing /usr/bin/packageof
rtld(GNU_HASH)
libc.so.6(GLIBC_2.4)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.2.5)
libc.so.6(GLIBC_2.0)
librpmdb-4.0.4.so
libgcc_s.so.1(GCC_3.0)
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(GLIBCXX_3.4)
librpmio-4.0.4.so
librpm-4.0.4.so
lib.req: processing /usr/bin/rpmdups
rtld(GNU_HASH)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.0)
librpmdb-4.0.4.so
libgcc_s.so.1(GCC_3.0)
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(GLIBCXX_3.4)
librpmio-4.0.4.so
librpm-4.0.4.so
lib.req: processing /usr/bin/rpmevrcmp
rtld(GNU_HASH)
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.3.4)
librpmdb-4.0.4.so
lib.req: processing /usr/bin/rpmrdups
rtld(GNU_HASH)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.0)
librpmdb-4.0.4.so
libgcc_s.so.1(GCC_3.0)
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(GLIBCXX_3.4)
librpmio-4.0.4.so
librpm-4.0.4.so
lib.req: processing /usr/bin/rpmvercmp
rtld(GNU_HASH)
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.3.4)
librpmdb-4.0.4.so
$
Выборочная пересборка нескольких пакетов дала идентичные зависимости.
Кроме того, пакет git не собирается, потому что там в некоторых
шелл-скриптах после `exit 0' идет некомментированный plain text.
Кроме того, будут проблемы с питоном, потому что `#!/usr/bin/env python'
теперь отыскиваются слишком хорошо. Всё это я готов обсудить вечером,
если буду не слишком пьян от своих скромных успехов.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2007-03-12 12:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-12 12:36 Alexey Tourbin [this message]
2007-03-12 21:49 ` Dmitry V. Levin
2007-03-13 22:12 ` Alexey Tourbin
2007-03-14 10:13 ` [devel] python problems Alexey Tourbin
2007-03-14 10:34 ` Alexey I. Froloff
2007-03-14 10:42 ` Alexey Tourbin
2007-03-14 18:11 ` Alexey Tourbin
2007-03-15 10:07 ` [devel] проблемы с поиском зависимостей [2] Ivan Fedorov
2007-03-15 10:27 ` Alexey I. Froloff
2007-03-15 10:46 ` Aleksey Avdeev
2007-03-15 11:04 ` Alexey I. Froloff
2007-03-15 11:00 ` Ivan Fedorov
2007-03-15 11:04 ` Alexey I. Froloff
2007-03-15 11:02 ` Igor Vlasenko
2007-03-15 11:40 ` Ivan Fedorov
2007-03-15 12:17 ` [devel] [JT] " Igor Vlasenko
2007-03-15 13:04 ` Ivan Fedorov
2007-03-15 12:22 ` [devel] " Alexey Tourbin
2007-03-15 12:56 ` [devel] Administrativia Dmitry V. Levin
2007-03-15 15:49 ` [devel] проблемы с поиском зависимостей [2] Денис Смирнов
2007-03-12 23:05 ` Michael Shigorin
2007-03-13 22:32 ` Alexey Tourbin
2007-03-14 9:42 ` [devel] [buildreq] " Michael Shigorin
2007-03-14 9:48 ` [devel] " Alexey Tourbin
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=20070312123630.GB7403@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