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

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Новая страница: «В мире существует огромное множество модулей для языка Perl, большинство которых находитс…»)
 
(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}} завершился с ошибкой, то необходимо с этой ошибкой разбираться. Типичная причина ошибки - необходимость для сборки других модулей, которых еще нет в репозиториях РОСы. В таком случае вы получите сообщение, что urpmi не смог установить зависимость типа '''perl(C::D)'''. В таком случае надо сначала создать пакет с модулем '''C::D''', установить его в систему и попробовать снова запустить {{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.