База данных зависимостей RPM не может сказать, что вы установили пакет из исходного кода. База данных RPM знает только о метаданных, присутствующих в пакетах RPM, пакет, установленный из источника, не содержит этих метаданных.
Некоторые сценарии configure, которые собирают пакет из исходного кода, создают pkg-config
, который представляет собой метаданные об установленном пакете. Тем не менее, нет четкой интеграции между метаданными из pkg-config
и метаданными RPM (или метаданными DEB
, или метаданными pacman
). При упаковке дистрибутива упаковщики вставляют метаданные в определенном формате в пакеты (например, пакеты RPM), и эти метаданные используются для определения зависимостей. Не метаданные в какой-либо другой форме.
С другой стороны, в одной системе могут быть разные версии библиотеки. По умолчанию (т.е. согласно стандартам кодирования GNU , которым следует большинство пакетов) сценарий configure
должен устанавливать свои продукты в / usr / local
.В то время как пакеты, упакованные дистрибутивом (например, RPM
), должны устанавливать свое содержимое в / usr
.
Следовательно, если вы следуете соглашению (называемое FHS ) и сохраняете пакеты / библиотеки, установленные из исходного кода в / usr / local
, затем устанавливаете ту же библиотеку через RPM
не будет конфликтовать с вашей библиотекой (поскольку упаковщики дистрибутива следуют FHS).
Когда RPM недоступен, вы можете создать его самостоятельно. Для этого вам нужно собрать пакет / библиотеку из исходного кода и установить его в фиктивное место (корень сборки). Затем предоставьте метаданные, необходимые для пакета RPM, и упакуйте их в файл RPM. В TLDP есть устаревшее, но очень подробное руководство по созданию RPM .