SpecTips/Requires: различия между версиями

Материал из ALT Linux Wiki
(init off SpecTips, wikification)
 
м (+rpmlib(CompressedFileNames))
Строка 22: Строка 22:
результат будет более корректным.  См. commit messages, там есть примеры
результат будет более корректным.  См. commit messages, там есть примеры
с /sbin/ifup, openssl-config, arpsend и vim.
с /sbin/ifup, openssl-config, arpsend и vim.
=== rpmlib(CompressedFileNames) ===
Это [http://lists.altlinux.org/pipermail/devel/2005-September/024045.html внутренние зависимости librpm], которые не попадают в базу данных, поскольку определяются самой библиотекой и, таким образом, могут измениться при установке другой версии librpm.


{{Category navigation|title=RPM spec|category=RPM spec}}
{{Category navigation|title=RPM spec|category=RPM spec}}

Версия от 14:52, 13 сентября 2009


Автогенерируемые зависимости

В ALT RPM доступен и используется ряд механизмов автоматического порождения списков зависимостей -- установочные генерируются в конце сборки пакета, сборочные помогает выяснять и обновлять утилита buildreq.

Если в 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)

Если пакет собирается хешером, то разрешение файловых путей в имена пакетов происходит не только по наличным в чруте пакетам, а и по содержанию $build/cache/contents/contents_index_bin.

Этот contents index как раз нужен, чтобы лучше искать зависимости вопреки минимальной сборочной среде и в ряде случаев давать более точные зависимости; например, зависимость на mutt должна разрешиться в /usr/bin/mutt, а не в mutt или mutt1.5, т.к. любой из них сгодится.

at@ внес много исправлений в find-package (это диспетчер, занимающийся поиском такого рода зависимостей), теперь в ряде "сложных" случаев результат будет более корректным. См. commit messages, там есть примеры с /sbin/ifup, openssl-config, arpsend и vim.

rpmlib(CompressedFileNames)

Это внутренние зависимости librpm, которые не попадают в базу данных, поскольку определяются самой библиотекой и, таким образом, могут измениться при установке другой версии librpm.