Buildreq: различия между версиями
м («Spectips/buildreq» переименована в «SpecTips/buildreq»: proper spelling) |
м («SpecTips/buildreq» переименована в «Buildreq») |
(нет различий)
|
Версия от 02:18, 17 августа 2008
При написании spec-файла возникает необходимость указывать сборочные зависимости в теге BuildRequires. Для упрощения этого процесса в ALT Linux используется специальный скрипт, который называется buildreq и находится в пакете rpm-utils.
Использовать его просто:
$ buildreq example.spec
Скрипт производит почти такую же работу, как и при сборке пакета. В процессе сборки программы он отслеживает все используемые пакеты и в результате добавляет в спек тег BuildRequires с нужными сборочными зависимостями.
Надо сказать, что скрипт не самый совершенный и иногда бывает, что зависимости не очень правильные -- они могут указывать на пакеты совсем не нужные при сборке. В таком случае, выявить и отсеять лишнее вам придется самостоятельно. Другими словами, buildreq производит лишь оценку сверху -- перечисляет достаточные, но необязательно необходимые пакеты.
Также, если в спеке уже прописан тег BuildRequires, то после buildreq он будет удален. Чтобы этого не происходило вам следует использовать тег BuildPreReq. Эти два тега равносильны и единственное отличие состоит в том, что второй не "затирается" при использовании buildreq.
По умолчанию, отслеживаются лишь зависимости для стадий %prep и %build. Это можно изменить ключом -b, указывающим стадию, после которой надо остановиться. Так, -bi указывает, что отслеживать надо стадии %prep, %build и %install.
Date: Tue, 18 Oct 2005 01:10:33 +0400 From: Alexey Tourbin <at@> To: ALT Devel discussion list <devel@> Subject: [devel] Re: webalizer-2.01.10-alt6 On Mon, Oct 17, 2005 at 10:30:28PM +0300, Michael Shigorin wrote: > On Mon, Oct 17, 2005 at 11:23:38PM +0400, Dmitry V. Levin wrote: > > > И что с этим предлагается делать? > > Просто добавить apache-devel в список сборочных зависимостей. > М-да. Даже мысли не допустил, что его там могло не быть... Это известная засада: buildreq "не ловит" файлы в /etc/rpm/macros.d. Workaround: где-нибудь в этих макросах делать stat за пределы /etc/rpm/macros.d. stat будет срабатывать только при раскрытии макросов. В alternatives вроде такое было.
> Интересно зачем для сборки нужен lint? Он там *действительно* > используется? telnet в списке тоже несколько смущает... Для более точного отслеживания нежелательных пакетов можно использовать e.g. buildreq --trace-p=lclint --trace-p=telnet *.spec Полное название опций --trace-package=PKG --trace-file=FILE