Как я могу создать RPM из модуля и рекурсивно создать отдельные независимые RPM для зависимостей? - PullRequest
9 голосов
/ 10 июля 2019

Учитывая модуль, как я могу создать обороты не только модуля, но и всех зависимостей модуля?

Начните с создания тестового модуля

$ module-starter --author "Evan Carroll" --email "me@evancarroll.com" --module Foo::Bar
Added to MANIFEST: Changes
Added to MANIFEST: ignore.txt
Added to MANIFEST: lib/Foo/Bar.pm
Added to MANIFEST: Makefile.PL
Added to MANIFEST: MANIFEST
Added to MANIFEST: README
Added to MANIFEST: t/00-load.t
Added to MANIFEST: t/manifest.t
Added to MANIFEST: t/pod-coverage.t
Added to MANIFEST: t/pod.t
Added to MANIFEST: xt/boilerplate.t
Created starter directories and files

Теперь я редактирую Makefile.pl и добавляю Mojolicious в качестве предварительного требования.

...
PREREQ_PM => {                                                         
      'Mojolicious' => '0'
....

Теперь я могу запустить

perl Makefile.PL
make dist

Но работает,

$ sudo cpantorpm -y /tmp/yum /tmp/Foo-Bar/Foo-Bar-0.01.tar.gz 

Я понял,

error: Failed build dependencies:
        perl >= 5.006 is needed by perl-Foo-Bar-0.01-1.noarch
        perl(ExtUtils::MakeMaker) is needed by perl-Foo-Bar-0.01-1.noarch
        perl(Mojolicious) is needed by perl-Foo-Bar-0.01-1.noarch

Это имеет смысл, но я хочу создать RPM для этих требований. Я бы хотел, чтобы Foo::Bar требовал оборотов, которые также генерируются из cpan, который представляет Mojolicious, и чтобы система сборки выводила два об / мин (один об / мин для Foo::Bar, который требует также предоставленных Mojolicious об / мин).

1 Ответ

2 голосов
/ 12 июля 2019

Было бы слишком легко обойти ад зависимостей. Я бы пошел на какой-нибудь проект как cpan-зависимость . Кто-то уже сделал работа для вас.

Вот как это работает:

1) Как установить Требуются следующие модули CPAN.

  • CPANPLUS
  • RPM :: * 1013 файла спецификации *

2) Как использовать Для создания rpm Linux :: Smaps bin / cpan-dependency.pl --conf = config / conf.yml Linux :: Smaps

3) conf.yml

  • filter_requires .. Удалить указанные требования из пакета.
  • build_skip .. Пропустить, чтобы собрать пакет.
  • build_requires. Сборка и установка указанных пакетов перед сборкой пакета.
  • требуется .. Добавить указанные пакеты к зависимости пакета.

Вам необходимо настроить conf.yml , чтобы удовлетворить ваши зависимости.

Чтобы построить свой проект, вы должны сделать следующее:

bin/cpan-dependency.pl --conf=config/conf.yml Foo::Bar

...