【问题标题】:How to precise the Perl version when creating a package using conda-build使用 conda-build 创建包时如何精确 Perl 版本
【发布时间】:2019-11-10 12:49:10
【问题描述】:

我正在尝试为我拥有的 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 文件的配方。我的 conda 中包含的 Perl 版本是 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。我想我的做法不对,但文档并没有真正帮助我,或者我没有找到相应的部分。

任何线索将不胜感激。

祝你早日/晚安!

编辑: 我该怎么办?

  1. 使用我位于 usr/bin/Perl 的本地 Perl 吗?

  2. https://www.cpan.org/src/README.html 下载 Perl 5.18.2 包并以某种方式将其链接到 meta.yaml 文件中?

【问题讨论】:

  • 您的模块不能与 Perl 5.26 一起使用吗?如果是这样,为什么您的要求是 &gt;=5.18.2 而不是 5.18.25.18.*
  • Perl 5.26.2 尚不支持该模块。如果我只有 perl 5.18.2perl 5.18.* 我在尝试构建包时收到此错误消息:conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform linux-64: set(['perl=5.18.2'])
  • 我不知道 conda 从哪里拉包。也许他们没有 perl 5.18.2 的软件包?
  • 好吧,我在 conda 外部使用的 Perl 在 usr/bin/perl 下,这是一个很好的版本。我还没有找到在 meta.yaml 文件中本地链接我的 Perl 的方法。有可能吗? --- 我有另一个选择,那就是下载 Perl 5.18.2 包并将其放在我的本地频道中并精确到 meta.yaml 中以将此包用作 Perl 但如果可能的话我真的不知道可以采取哪些步骤。
  • 不知道;在这个问题之前,我什至没有听说过 conda 。 :-)

标签: linux perl package conda conda-build


【解决方案1】:

我找到了解决问题的方法。我不确定这是不是正确的做法。

我在这里下载 Perl 5.18.2 的 conda 包:https://anaconda.org/Nersc/perl/files

我还在 meta.yaml 的需求字段中指出:

requirements:
  run:
    perl x.x

我将包放在我的自定义频道中。然后我使用conda-build &lt;path_to_Perl_module&gt;/recipe/ --perl=5.18.2 创建包。当我使用conda instal &lt;perl_module&gt; 安装软件包时,我得到了这个输出:

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,那么我们会在 conda-forge 中寻找最新的 Perl 版本。

如果您遇到同样的问题,我希望它会对您有所帮助。

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2020-03-29
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多