Импорт пакетов из других дистрибутивов
Нередко возникает необходимость собрать в репозитории РОСЫ новые программы, для которых spec-файл не может быть подготовлен автоматически (как в случае модулей Perl, Python и прочего) или хотя бы на основе шаблона.
В некоторых случаях пригодится утилита spec-gen, однако она далека от идеала.
Однако есть путь проще - возможно, кто-то уже собрал RPM-пакет под другой дистрибутив, и можно позаимствовать spec-файл оттуда. Посмотреть - в каких дистрибутивах уже есть пакет с нужной программой, можно на порталах наподобие Pkgs.org. Если нужный пакет нашелся, то надо скачать соответствующий src.rpm и установить его в систему:
$ rpm -i my_program.src.rpm
При этом spec-файл установится в директорию ~/rpmbuild/SPECS, архив с исходным кодом и патчи - в ~/rpmbuild/SOURCES.
Если пакет нашелся в нескольких дистрибутивах, то стоит выбирать наиболее близкие к РОСЕ - OpenMandriva, Mageia или PCLinuxOS. Если в этих системах пакета не нашлось, то можно попробовать RPM для Fedora, и уже совсем в крайнем случае - от SUSE.
Первым делом, spec-файл от другого дистрибутива необходимо обработать утилитой spec-cleaner, которая подправит некоторые известные расхождения с РОСОЙ:
$ spec-cleaner ~/rpmbuild/SPECS/my_program.spec
После чего попробовать установить зависимости сборки:
$ urpmi ~/rpmbuild/SPECS/my_program.spec
Вполне вероятно, что urpmi скажет, что некоторые зависимости не могут быть установлены. В большинстве случаев это происходит из-за разницы в названиях пакетов с одними и теми же программами в разных дистрибутивах и вам надо посмотреть, на что необходимо заменить проблемную запись BuildRequires в spec-файле. Впрочем, возможно некоторых программ еще нет в репозиториях РОСЫ и необходимо сначала собрать их.
Как только зависимости сборки установлены, можно попробовать собрать пакет:
$ rpmbuild -bb ~/rpmbuild/SPECS/my_program.spec
Если при сборки возникли ошибки, то можно проконсультироваться со страничкой часто встречающихся ошибок.
Если программа собралась успешно, то результаты сборки можно найти в директории ~/rpmbuild/RPMS. Установите собравшиеся пакеты, убедитесь в их работоспособности и собирайте src.rpm:
$ rpmbuild -bs ~/rpmbuild/SPECS/my_program.spec
Результатом работы этой программы будем пакет ~/rpmbuild/SRPMS/my_program.src.rpm, из которого можно создавать проект на ABF