On Thu, Feb 15, 2007 at 12:34:41PM +0300, Damir Shayhutdinov wrote: > > > Для этого надо сначала пройтись по всем .jar файлам в /usr/share/java > > > и составить списки всех .class файлов находящихся в них. > > > > То есть предлагается ставить только такие зависимости Requires, которые > > заведомо удовлетворены в сборочной среде? Сомнительно. > Угу, я тоже об этом думал. К сожалению, если хочется делать > зависимости на уровне .jar - это единственный выход. Здесь выполняется (причем не совсем корректно) часть работы, которую rpm должен выполнять при установке пакетов: соединять названия пакетов по виртуальным зависимостям и решать, удовлетворены виртуальные зависимости или нет. Т.е. зависимости на уровне jar -- это в таком случае получается что-то среднее между названиями пакетов и "настоящими" виртуальными зависимостями. Когда нужный jar файл из /usr/share/java/* найден, тогда вместо виртуальной зависимости java($jar) можно ставить зависимость просто на /usr/share/java/$jar.jar или даже `rpm -qf /usr/share/java/$jar.jar'. Т.е. виртуальные зависимости специального вида -- не самоцель; предполагается, что, по сравнению с именами пакетов, они более точно описывают внутреннюю структуру "настоящих" зависимостей. > Впрочем, если забить на разбухание базы - то у меня на гит в > rpm-build-java лежит файл java.req, в котором в качестве > промежуточного результата используется список классов, который > использует пакет. Если этот список в текущем виде сконвертировать в > Java(имя класса) и представить как Requires - то получится все очень > хорошо. Только тогда еще надо рисовать скрипт java.prov, который будет > вытаскивать из .jar имена классов и предоставлять их как Provides. Если я правильно понимаю, что *.jar -- это просто архивы *.class файлов, причем "на самом деле" зависимости существуют именно между *.class файлами; то, по-моему, лучше делать зависимости на уровне class-файлов.