为conda构建R-packages的错误

时间:2016-04-15 15:27:23

标签: r anaconda readline ncurses conda

我很难安装Anaconda存储库中没有的R-packages。到目前为止,我的尝试可以在How to install R-packages not in the conda repositories?找到。

目前,我正在尝试按照{em>构建conda R软件包标题下this article的说明为rafalib构建R-package conda

第一部分工作正常。

conda skeleton cran rafalib

出:

Tip: install CacheControl to cache the CRAN metadata
Fetching metadata from http://cran.r-project.org/
Writing recipe for rafalib
Done

构建命令遇到错误

conda build r-rafalib

输出:

Removing old build environment
Removing old work directory
BUILD START: r-rafalib-1.0.0-r3.2.2_0
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .
Error:  Packages missing in current linux-64 channels: 
  - r 3.2.2*
  - r-rcolorbrewer

我通过r 3.2.2安装了conda - 64位,运行没有问题。我已经通过r-colorbrewer安装了conda,我可以在R中使用该软件包而不会出现问题。为什么我在尝试构建conda软件包时遇到这些错误?

我在Linux(Antergos,Arch衍生物)上使用内核4.4.5-1-ARCH。

更新2015/04/19

感谢this answer,我发现我可以通过在与我想要安装的软件包相同的目录中单独构建它们来包含依赖项。这对我没用,但我也读到我可以在build -c的build命令中包含一个频道,就像安装时一样。现在我做了:

conda build -c r r-rafalib

这会传递所有依赖项问题,但在获取,提取和链接包之后,它会失败。这是错误消息的结尾。

Removing old work directory
Source cache directory is: /home/joel/anaconda2/conda-bld/src_cache
Downloading source to cache: rafalib_1.0.0.tar.gz
Downloading http://cran.r-project.org/src/contrib/rafalib_1.0.0.tar.gz
rafalib_1.0.0. 100% |#######################| Time: 0:00:00   4.87 MB/s
Success
Extracting download
Package: r-rafalib-1.0.0-r3.2.2_0
source tree in: /home/joel/anaconda2/conda-bld/work/rafalib
+ mv DESCRIPTION DESCRIPTION.old
+ grep -v '^Priority: ' DESCRIPTION.old
+ /home/joel/anaconda2/envs/_build/bin/R CMD INSTALL --build .
sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
Command failed: /bin/bash -x -e /home/joel/drafts/r-rafalib/build.sh

错误sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook与我在使用install.packages() as reported here时遇到的错误相同。

有一些related discussion in this thread。我试图通过安装不同版本的ncurses来解决这个错误,包括this patched version,我试图链接readline库as suggested here,但我一直遇到同样的错误。我在这一点上很失落,任何帮助解决这个问题都将非常感激。

1 个答案:

答案 0 :(得分:1)

虽然我从一个不同的问题开始,但最终的解决方案与我在其他地方发布的How to install R-packages not in the conda repositories?相同。我在这里添加它是为了完整。

最后,我通过跟随the approach recommended here并将anaconda的libreadline符号化到系统1来解决bufferMaxEntries问题:

rl_event_hook

由于在使用带有R的mv ~/anaconda3/lib/libreadline.s.6.2 ~/anaconda3/lib/libreadline.s.6.2.bak ln -s /usr/lib/libreadline.so.6.3 ~/anaconda3/lib/libreadline.s.6.2 时无法加载共享对象,我仍然无法安装一些依赖性很强的R-package。但是,更简单的包工作正常,我可以从大多数依赖重包中获取anacondas R-repositories。