Импорт пакетов из других дистрибутивов — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(typo)
(2019 -> 2021)
 
Строка 34: Строка 34:
 
Результатом работы этой программы будем пакет {{File|~/rpmbuild/SRPMS/my_program.src.rpm}}, из которого надо [http://wiki.rosalab.ru/ru/index.php/ABF:_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%D0%BC%D0%B8#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BD.D0.BE.D0.B2.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D0.B0_.D1.81_.D0.BD.D1.83.D0.BB.D1.8F создавать проект на ABF]
 
Результатом работы этой программы будем пакет {{File|~/rpmbuild/SRPMS/my_program.src.rpm}}, из которого надо [http://wiki.rosalab.ru/ru/index.php/ABF:_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%D0%BC%D0%B8#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BD.D0.BE.D0.B2.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D0.B0_.D1.81_.D0.BD.D1.83.D0.BB.D1.8F создавать проект на ABF]
  
Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2019.1 (последней на момент написания этой странички, если есть платформа поновее типа rosa2019.1 - то надо выбирать ее).
+
Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2021.1 (последней на момент написания этой странички, если есть платформа поновее типа rosa2021.1 - то надо выбирать ее).
  
 
[[Категория:Практика студентов]]
 
[[Категория:Практика студентов]]

Текущая версия на 17:32, 9 ноября 2021

Нередко возникает необходимость собрать в репозитории РОСЫ новые программы, для которых 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-файле. Впрочем, возможно некоторых программ еще нет в репозиториях РОСЫ и необходимо сначала собрать их.

Как только зависимости сборки установлены, можно попробовать собрать пакет, предварительно обработав spec-файл утилитой spec-cleaner:

$ spec-cleaner ~/rpmbuild/SPECS/my_program.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

Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2021.1 (последней на момент написания этой странички, если есть платформа поновее типа rosa2021.1 - то надо выбирать ее).