Сборка пакетов с модулями Perl — различия между версиями
D uragan (обсуждение | вклад) (Новая страница: «В мире существует огромное множество модулей для языка Perl, большинство которых находитс…») |
D uragan (обсуждение | вклад) (Now we use 2019.1 branch) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
В мире существует огромное множество модулей для языка Perl, большинство которых находится на сайте [http://www.cpan.org/ CPAN]. Чтобы упростить установку этих модуле в РОСЕ, они оформляются в виде пакетов rpm - в таком случае их можно поставить через стандартный менеджер пакетов. | В мире существует огромное множество модулей для языка Perl, большинство которых находится на сайте [http://www.cpan.org/ CPAN]. Чтобы упростить установку этих модуле в РОСЕ, они оформляются в виде пакетов rpm - в таком случае их можно поставить через стандартный менеджер пакетов. | ||
− | Для автоматического создания пакетов с модулями Perl используется утилита cpan2dist с бэкендом CPANPLUS-Dist-Mdv. Утилита сама находит и скачивает архив с исходным кодом, формирует spec-файл с инструкциями сборки | + | Для автоматического создания пакетов с модулями Perl используется утилита cpan2dist с бэкендом CPANPLUS-Dist-Mdv. Утилита сама находит и скачивает архив с исходным кодом, формирует spec-файл с инструкциями сборки и пытается собрать пакет. |
− | и пытается собрать пакет. | + | |
Перед запуском утилиты необходимо создать все требуемые ей директории: | Перед запуском утилиты необходимо создать все требуемые ей директории: | ||
− | $ mkdir -p ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS ~/rpmbuild/SRPMS ~/rpmbuild/tmp | + | $ mkdir -p ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS ~/rpmbuild/SRPMS ~/rpmbuild/tmp |
Пакет для модуля Foo::Bar создается следующей командой: | Пакет для модуля Foo::Bar создается следующей командой: | ||
Строка 23: | Строка 22: | ||
Если все ok, то на основе пакета src.rpm ({{File|~/rpmbuild/SRPMS/perl-Foo-Bar-<version>.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] в своем репозитории. | Если все ok, то на основе пакета src.rpm ({{File|~/rpmbuild/SRPMS/perl-Foo-Bar-<version>.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] в своем репозитории. | ||
− | Если вызов {{Prog|cpan2dist}} завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях | + | Если вызов {{Prog|cpan2dist}} завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях РОСЫ. В таком случае вы получите сообщение, что urpmi не смог установить зависимость типа '''perl(C::D)'''. В таком случае надо сначала создать пакет с модулем '''C::D''', установить его в систему и попробовать снова запустить {{Prog|cpan2dist}}. |
+ | |||
+ | Для надежности, следует попробовать собрать пакет уже на ABF - это позволяет выявить ошибки, которые можно пропустить при локальной сборке. Для этого необходимо перейти на страничку вашего проекта, нажать "New Build" и в появившемся окне слева отметить галочками репозитории main и contrib для платформы rosa2019.1 (последней на момент написания этой странички, если есть платформа поновее - то надо выбирать ее). | ||
+ | |||
+ | Более подробная информация о правилах оформления модулей 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.