Сборка пакетов с модулями Perl — различия между версиями
D uragan (обсуждение | вклад) |
D uragan (обсуждение | вклад) (Now we use 2019.1 branch) |
||
Строка 24: | Строка 24: | ||
Если вызов {{Prog|cpan2dist}} завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях РОСЫ. В таком случае вы получите сообщение, что urpmi не смог установить зависимость типа '''perl(C::D)'''. В таком случае надо сначала создать пакет с модулем '''C::D''', установить его в систему и попробовать снова запустить {{Prog|cpan2dist}}. | Если вызов {{Prog|cpan2dist}} завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях РОСЫ. В таком случае вы получите сообщение, что urpmi не смог установить зависимость типа '''perl(C::D)'''. В таком случае надо сначала создать пакет с модулем '''C::D''', установить его в систему и попробовать снова запустить {{Prog|cpan2dist}}. | ||
− | Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы | + | Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2019.1 (последней на момент написания этой странички, если есть платформа поновее - то надо выбирать ее). |
Более подробная информация о правилах оформления модулей Perl приведена на странице [[Perl policy]]. | Более подробная информация о правилах оформления модулей Perl приведена на странице [[Perl policy]]. | ||
[[Категория:Практика студентов]] | [[Категория:Практика студентов]] |
Текущая версия на 13:03, 3 июля 2019
В мире существует огромное множество модулей для языка Perl, большинство которых находится на сайте CPAN. Чтобы упростить установку этих модуле в РОСЕ, они оформляются в виде пакетов rpm - в таком случае их можно поставить через стандартный менеджер пакетов.
Для автоматического создания пакетов с модулями Perl используется утилита cpan2dist с бэкендом CPANPLUS-Dist-Mdv. Утилита сама находит и скачивает архив с исходным кодом, формирует spec-файл с инструкциями сборки и пытается собрать пакет.
Перед запуском утилиты необходимо создать все требуемые ей директории:
$ mkdir -p ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS ~/rpmbuild/SRPMS ~/rpmbuild/tmp
Пакет для модуля Foo::Bar создается следующей командой:
$ cpan2dist --format CPANPLUS::Dist::Mdv Foo::Bar
Если повезет, то все соберется сразу и в результате у вас будет лежать собранный пакет, а также пакет src.rpm - ~/rpmbuild/SRPMS/perl-Foo-Bar-<version>.src.rpm.
Получившийся в результате пакет необходимо попробовать установить с помощью urpmi:
$ urpmi --test ~/rpmbuild/RPMS/<pkg_arch>/perl-Foo-Bar-<version>.rpm
Здесь <pkg_arch> может принимать значение i586, x86_64 или noarch – это зависит от архитектуры вашей системы и от того, помечен ли пакет как независимый от архитектуры (это определяется наличием конструкции "BuildArch: noarch" в spec-файле). Посмотрите на вывод rpmbuild – он выводит пути к собранным пакетам. Если urpmi сообщит, что не может установить зависимость типа perl(A::B), то вам нужно также озаботиться созданием пакета для модуля A::B. Для сборки нашего модуля он не нужен, но вот для его работы понадобится.
Если все ok, то на основе пакета src.rpm (~/rpmbuild/SRPMS/perl-Foo-Bar-<version>.src.rpm) необходимо сделать проект на ABF в своем репозитории.
Если вызов cpan2dist завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях РОСЫ. В таком случае вы получите сообщение, что urpmi не смог установить зависимость типа perl(C::D). В таком случае надо сначала создать пакет с модулем C::D, установить его в систему и попробовать снова запустить cpan2dist.
Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2019.1 (последней на момент написания этой странички, если есть платформа поновее - то надо выбирать ее).
Более подробная информация о правилах оформления модулей Perl приведена на странице Perl policy.