CoreSystem/SpecCriticism

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Что не так с rpm и спеками

Затруднена рефлексия

Теги и секции в спеке начинают анализироваться после раскрытия макросов. Это означает, что о спеке ничего нельзя сказать, не раскрыв рекурсивно все макросы. Более того, конструкция `%()` раскрывается в результат исполнения произвольного кода на шелле. Соответственно, из спека в общем случае невозможно что-либо достать, не раскрыв все макросы и не исполнив все встроенные шелльные вставки — включая информацию о версии, релизе и лицензии. Это затрудняет анализ спеков без необходимости сборки спека, в том числе массовый.

Стандартные инструменты авторов пакетов ALT Linux Team прибегают к эвристикам для получения этой информации в надежде, что в 95% случаев этого достаточно.

Зависимость от архитектуры

В силу того, что язык спеков — макроязык без костей (см. предыдущий параграф), очень легко сделать SRPM (не "бинарный" пакет, а исходный), зависящий от архитектуры: например, с разным списком патчей и сурсов на разных архитектурах. Если, например, собрать такой пакет в репозиторий, то опубликован будет один из этих srpm, но продуктовые ("бинарные") пакеты будут собраны из srpm, раскрытых в окружении с определённым %arch. Это стреляет в разных местах: например, на пересборочницу на всех архитектурах попадает общий srpm.