Как уточнить версию Perl при создании пакета с помощью conda-build

Я пытаюсь создать пакет для модуля Perl, который у меня есть, а затем поместить его в локальный канал, чтобы иметь возможность установить его в среде conda. Я пытаюсь следовать документации conda, но, поскольку это первый раз, когда я пытаюсь это сделать, я как бы потерял себя.

Документ для создания пакета conda с нуля: https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs.html

Документ для понимания метаданных файла meta.yaml: https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-section

Документ для conda-build: https://conda.io/projects/conda-build/en/latest/resources/commands/conda-build.html

Итак, сначала я создал рецепт с файлами meta.yaml и build.sh. Версия Perl, включенная в мой conda, - 5.26.2. Однако модуль Perl был написан с использованием Perl 5.18.2. Я не могу найти способ изменить версию Perl ...

Я попытался :

$ conda-build <path_to_perl_module>/recipe --perl=5.18.2

Я также попытался добавить в файл meta.yaml некоторые спецификации Perl в разделе требований.

requirements:
  host:
    perl >=5.18.2

Но в обоих случаях (я также пытался изменить раздел требований к запуску / сборке с тем же результатом), когда я устанавливаю пакет в среде conda, в консоли появляется приглашение:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pmp-0.8.2_BSP              |                0           5 KB  file:///home/usr/BSP-channel
    ------------------------------------------------------------
                                           Total:           5 KB

The following NEW packages will be INSTALLED:

  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  perl               conda-forge/linux-64::perl-5.26.2-h516909a_1006
  pmp                BSP-channel/linux-64::pmp-0.8.2_BSP-0

Как видите, менеджер пакетов хочет установить Perl 5.26.2. Думаю, я делаю это неправильно, но документация мне особо не помогает или я не нашел соответствующей части.

Любые зацепки были бы очень признательны.

Хорошего дня / ночи!

edit: Что я мог сделать?

  1. Использовать мой локальный Perl, расположенный в usr / bin / Perl?

  2. Загрузите пакет Perl 5.18.2 по адресу: https://www.cpan.org/src/README.html и как-то связал его внутри файла meta.yaml?


person AntMau    schedule 28.06.2019    source источник
comment
Ваш модуль не работает с Perl 5.26? Если да, то почему в ваших требованиях указано >=5.18.2, а не просто 5.18.2 или 5.18.*?   -  person melpomene    schedule 28.06.2019
comment
Модуль пока не поддерживается для Perl 5.26.2. Если я только perl 5.18.2 или perl 5.18.*, я получил это сообщение об ошибке при попытке собрать пакет: conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform linux-64: set(['perl=5.18.2'])   -  person AntMau    schedule 28.06.2019
comment
Не знаю, откуда conda тянет пакеты. Может у них нет пакета для perl 5.18.2?   -  person melpomene    schedule 28.06.2019
comment
Ну, Perl, который я использую вне conda, находится под usr/bin/perl, и это хорошая версия. Я не нашел способа локально связать свой Perl внутри файла meta.yaml. Возможно ли такое? --- У меня есть еще один вариант: загрузить пакет Perl 5.18.2 и поместить его в мой локальный канал и указать в meta.yaml, чтобы использовать этот пакет как Perl, но если это возможно, я действительно не знаю какие шаги следует предпринять.   -  person AntMau    schedule 28.06.2019
comment
Без понятия; Я даже не слышал о conda до этого вопроса. :-)   -  person melpomene    schedule 28.06.2019


Ответы (1)


Я нашел решение своей проблемы. Хотя я не уверен, что это правильный способ.

Я загружаю пакет conda для Perl 5.18.2 здесь: https://anaconda.org/Nersc/perl/files

Я также указываю в meta.yaml в поле требований:

requirements:
  run:
    perl x.x

Я поместил пакет в свой клиентский канал. Затем я создаю пакет, используя conda-build <path_to_Perl_module>/recipe/ --perl=5.18.2. Когда я устанавливаю пакет с помощью conda instal <perl_module>, я получаю следующий результат:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    perl-5.18.2                |                3        14.2 MB  file:///home/usr/BSP-channel
    pmp-0.8.2_BSP              |                0           5 KB  file:///home/usr/BSP-channel
    ------------------------------------------------------------
                                           Total:        14.2 MB

The following NEW packages will be INSTALLED:

  perl               BSP-channel/linux-64::perl-5.18.2-3
  pmp                BSP-channel/linux-64::pmp-0.8.2_BSP-0

Если я создам модуль без указания --perl=5.18.2, мы будем искать последнюю версию Perl, доступную в conda-forge.

Я надеюсь, что это поможет вам, если вы столкнетесь с той же проблемой.

person AntMau    schedule 03.07.2019