代码之家  ›  专栏  ›  技术社区  ›  Michal Charemza

如何调试R包安装失败?

  •  0
  • Michal Charemza  · 技术社区  · 6 年前

    我尝试在Jupyter笔记本电脑中安装Cran软件包(从镜子中),通过Jupyterlab启动,运行在AlpineLinuxDocker映像中,大多数软件都是使用Conda安装的。一些程序包工作…

    install.packages('ABCanalysis', verbose=TRUE, INSTALL_opts=c('--debug'), repos=...)
    

    …哪些输出…

    system (cmd0): /opt/conda/lib/R/bin/R CMD INSTALL --debug 
    also installing the dependency 'plotrix'
    
    foundpkgs: plotrix, ABCanalysis, /tmp/RtmpqoorrU/downloaded_packages/plotrix_3.7-4.tar.gz, /tmp/RtmpqoorrU/downloaded_packages/ABCanalysis_1.2.1.tar.gz
    files: /tmp/RtmpqoorrU/downloaded_packages/plotrix_3.7-4.tar.gz, 
        /tmp/RtmpqoorrU/downloaded_packages/ABCanalysis_1.2.1.tar.gz
    1): succeeded '/opt/conda/lib/R/bin/R CMD INSTALL --debug -l '/opt/conda/lib/R/library' /tmp/RtmpqoorrU/downloaded_packages/plotrix_3.7-4.tar.gz'
    2): succeeded '/opt/conda/lib/R/bin/R CMD INSTALL --debug -l '/opt/conda/lib/R/library' /tmp/RtmpqoorrU/downloaded_packages/ABCanalysis_1.2.1.tar.gz'
    Updating HTML index of packages in '.Library'
    Making 'packages.html' ... done
    
    install.packages('bitops', verbose=TRUE, INSTALL_opts=c('--debug'), repos=...)
    

    …但有些包裹不…

    install.packages('bitops', verbose=TRUE, INSTALL_opts=c('--debug'), repos=...)
    
    system (cmd0): /opt/conda/lib/R/bin/R CMD INSTALL --debug
    foundpkgs: bitops, /tmp/RtmpqoorrU/downloaded_packages/bitops_1.0-6.tar.gz
    files: /tmp/RtmpqoorrU/downloaded_packages/bitops_1.0-6.tar.gz
    Warning message in install.packages("bitops", verbose = TRUE, INSTALL_opts = c("--debug"), :
    "installation of package 'bitops' had non-zero exit status"Updating HTML index of packages in '.Library'
    Making 'packages.html' ... done
    

    我怀疑,但不确定,那些不需要编译工作的包,以及那些需要编译工作的包。

    如何调试,即如何发现导致非零退出代码的原因?两个 --debug verbose 不要透露任何有用的信息。

    1 回复  |  直到 6 年前
        1
  •  1
  •   user2554330    6 年前

    使用 keep_outputs = TRUE ,即

    install.packages('bitops', keep_outputs = TRUE, repos=...)
    

    这将把安装的输出保存在一个名为 bitops.out 在当前工作目录中。