为conda gcc和binutils构建自己的包问题

时间:2017-08-25 12:00:04

标签: linux anaconda conda

这篇文章总结了我的痛苦,但最终成功(只是偶然)的方式来构建自己的conda包 netgen网格化工具与Python接口。由于tpaviot,我找到了netgen构建的recipe。 将存储库克隆到'netgen-conda'文件夹后,我运行了:

conda build netgen-conda/netgen-6.2-dev

报告“不满意的依赖”:'oce','gcc-5','binutils'。 所以我试着自己安装这些软件包。遗憾的是,文档并没有强调“conda build”使用自己的临时环境这一重要事实,因此安装(see)的内容并不重要。然而,即使手动安装'gcc-5'和'binutils'也几乎是不可能的。

其他新手的提示:在我了解详细信息about channels后,很多问题都消失了。

首先尝试从'salford_systems'频道suggested by anaconda安装'gcc-5'和'binutils':

conda install -c salford_systems binutils gcc-5

但结果是: ERROR conda.core.link:_execute_actions(337): An error occurred while installing package 'salford_systems::gcc-5-5.3.0-0'. LinkError: post-link script failed for package salford_systems::gcc-5-5.3.0-0 running your command again with - V will provide additional information location of failed script: /home/jb/miniconda3/envs/test/bin/.gcc-5-post-link.sh

使用详细输出('-v')不再提供信息。我还对以下事实感到困惑:脚本在给定路径上不存在(可能自动删除)。 根据目前的经验,我承认可以从'-vv'输出(reported issue)挖出问题的原因。经过一番尝试,我发现只有这样 安装两者是首先将'gcc-5'安装到干净的环境中,然后安装'binutils'。因为'conda build'安装了所有东西 从头开始,没有办法指定我被卡住的已安装软件包的顺序。

困扰我的另一个问题是'conda build'长前缀黑客。由于未知原因,他们使用极长的前缀作为辅助文件夹 这导致了各种各样的问题。我遇到过三个这样的问题:

  1. 像往常一样,我已加密HOME导致一个已知问题。
  2. 使用解决方法'--croot / tmp'可防止从'/ tmp'创建硬链接到'HOME / miniconda3',因为它们位于不同的文件系统上。    使用该副本有一个后备。我甚至认为后备功能暂时不起作用,但它确实有效,只是让构建运行得更长。
  3. 尝试从'默认'频道安装'gcc'(4.x)抱怨前缀太短。所以最终的workaroud是手动设置前缀的长度    '--prefix-length 70'。
  4. 最后,我发现不需要依赖'binutils'并成功构建包:

    conda build --prefix-length 70 -c salford_systems -c conda-forge -c dlr-sc netgen-conda/netgen-6.2-dev

    (开放式问题)摘要:

    • 使用'apt-get'时,Conda频道引入了一种新的依赖性。有没有办法弄清楚什么是包的规范渠道。
    • 是否有人使用'gcc-5'和'binutils'组合成功?
    • 仍然缺乏有关内部conda机制的文档,错误消息无法提供问题的线索。
    • Conda-build使用有问题的前缀hack并且缺乏控制已安装包的顺序的能力。有人知道这次黑客行为的原因吗?

0 个答案:

没有答案