C++ 无法在Ubuntu Conda环境中编译R包:x86_64-Conda-linux-gnu-c++;:找不到

C++ 无法在Ubuntu Conda环境中编译R包:x86_64-Conda-linux-gnu-c++;:找不到,c++,r,linux,anaconda,C++,R,Linux,Anaconda,我在Ubuntu20.04 LTS操作系统上运行Miniconda3,并在conda环境中安装了R-4.0.3。当我试图在CRAN repositoriesvia R提示符下安装软件包时,我得到一个 x86_64-conda-linux-gnu-c++:未找到 我已经按照内置gcc工具链上Anaconda文档中的建议运行了sourceactivateqwe(qwe是环境的名称)。我还运行了源代码激活根 我还使用conda install gxx_linux-64安装了comiler工具链 My

我在Ubuntu20.04 LTS操作系统上运行Miniconda3,并在conda环境中安装了R-4.0.3。当我试图在CRAN repositoriesvia R提示符下安装软件包时,我得到一个

x86_64-conda-linux-gnu-c++:未找到

我已经按照内置gcc工具链上Anaconda文档中的建议运行了sourceactivateqwe(qwe是环境的名称)。我还运行了源代码激活根

我还使用conda install gxx_linux-64安装了comiler工具链

My echo$PATH返回以下内容:

/home/sreetta/miniconda3/envs/qwe/bin:/home/sreetta/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin

下面是我尝试安装名为bayesm的软件包时的完整输出

安装软件包(“bayesm”) ---请选择用于此会话的CRAN镜像--- 正在尝试URL'https://cloud.r-project.org/src/contrib/bayesm_3.1-4.tar.gz' 内容类型“应用程序/x-gzip”长度2269364字节(2.2MB) ================================================== 下载2.2MB

  • 正在安装源程序包“bayesm”。。。 **包“bayesm”已成功解包并检查MD5总和 **使用分阶段安装 **自由基 x86_64-conda-linux-gnu-c++-std=gnu++11-I“/home/sreetta/miniconda3/envs/qwe/lib/R/include”-DNDEBUG-I../inst/include/-I'/home/sreetta/miniconda3/envs/qwe/lib/R/library/Rcpp/include'-I'/home/sreetta/miniconda3/envs/qwe/lib/R/library/RcppArmadillo/include'-DNDEBUG-D_-FORTIFY_-SOURCE=2-O2-isystem/home/sreetta/miniconda3/envs/qwe/include-I/home/sreetta/miniconda/miniconda3/qwe-Wl-rpath链接,/home/sreedta/miniconda3/envs/qwe/lib-fpic-fvisibility inlines hidden-fmessage length=0-march=nocona-mtune=haswell-ftree vectorize-fpic-fstack protector strong-fno plt-O2-ffunction sections-pipe-isystem/home/sreedta/miniconda3/envs/qwe/include-fdebug prefix map=/home/conda/feedt\u root/build\u artifacts/r-base\u 1603047469992/work=/usr/local/src/conda/r-base-4.0.3-fdebug prefix map=/home/sreetta/miniconda3/envs/qwe=/usr/local/src/conda prefix-c RcppExports.cpp-o RcppExports.o /bin/sh:1:x86_64-conda-linux-gnu-c++:未找到 make:**[/home/sreetta/miniconda3/envs/qwe/lib/R/etc/Makeconf:180:RcppExports.o]错误127 错误:包“bayesm”的编译失败
  • 删除“/home/sreetta/miniconda3/envs/qwe/lib/R/library/bayesm”
  • 恢复以前的“/home/sreetta/miniconda3/envs/qwe/lib/R/library/bayesm”
下载的源程序包位于中 “/tmp/Rtmp6hsphd/download_packages” 正在更新“.Library”中包的HTML索引 正在制作“packages.html”。。。完成 警告信息: 在install.packages(“bayesm”)中:
安装程序包“bayesm”的退出状态为非零

如果您在Conda环境中安装了R,我强烈建议您避免通过
utils::install.packages进行安装。相反,通过Conda安装。许多CRAN软件包可通过Conda Forge频道获得,通常在软件包名称前加上“r-”。所以,试试看

conda安装-n qwe-c conda forge r-bayesem

多亏了@merv,我了解了使用conda构建环境的不同方法,并成功实现了我的目标。他发布了一个链接,指向他关于使用
environment.yaml
文件构建特定编译器和依赖项的答案之一。我还学到了一些有价值的东西:“最好将源库所使用的频道保持在最低限度。在以前的安装中,我将默认频道、
r
pypi
conda forge
频道组合在一起。”。在这个成功的设置中,只有
conda forge
pypi

以下是我在miniconda3安装中为R正确编译所遵循的步骤

  • 已完全删除现有安装:
  • 我还从/etc/profile和~/.bashrc中删除了以下行
  • (这是必要的,因为在安装时,我对conda init说了“是”)

  • 重新安装的miniconda3(下载后和安装前,请确保您执行SHA256测试以确保文件完整性-我的第一次下载已损坏)

  • 使用下面的
    .yaml
    创建了一个新环境
    asd
    。本练习的目标是使用
    rpy2
    pybrms
    使R和Python相互协作

  • 在仍然处于(基本)状态时,$prompt I source使用激活了新环境
  • 然后我直接从conda forge
    R-v8
    R-rcpp
    R-rcpparmadillo
    安装了以下3个R软件包
  • 在(asd)$提示符下,我用
    (asd)$R
    启动了R,以进入R提示符并运行
  • 这是我在过去3天中执行的测试,测试conda环境中的R如何访问内置gcc编译器而不是系统编译器

  • 我在R提示符下使用quit()退出R
  • quit()

  • 返回
    (asd)$
    提示符以安装更多R软件包
  • 这将安装一大堆R库


    作为一个新操作系统(Linux Ubuntu)上的Anaconda、R和Python的新用户,这同样令人沮丧和收获。我希望这对其他新用户有用。

    步骤1:在主目录中查找x86_64-conda-linux-gnu-c++

    [showteth@localhost ~] find ~ -name "x86_64-conda-linux-gnu-c++"
    /home/showteth/anaconda3/envs/r351/bin/x86_64-conda-linux-gnu-c++
    
    echo 'PATH=${PATH}:/home/showteth/anaconda3/envs/r351/bin' >> .Renviron
    
    步骤2:将
    /home/showtethe/anaconda3/envs/r351/bin
    添加到
    .Renviron
    (在您的主目录中)


    步骤3:重新启动rstudio服务器,使配置生效

    感谢您的建议。在我发布到这里之后,我开始探索Conda forge上的R软件包。我还没有开始安装,但你的反馈是一个很好的确认。自从我最近开始使用Ubuntu,我想
    name: asd
    channels:
      - conda-forge   # @merv had mentioned as best source for R related stuff
      - defaults      # only conda-forge has R-base=4.0.3 so defaults are second
      - dependencies: # this is where I added the gcc suite of libraries per @merv
      - python=3.6.11
      - libcurl
      - libv8
      - libgcc-ng  # gcc c
      - libgfortran-ng # gcc fortran
      - libgfortran4   # gcc fortran
      - libglib        # also needed for gcc (I could be wrong)
      - libstdcxx-ng   # gcc c++ / g++
      - conda
      - pip
      - wheel
      - r-base=4.0.3   # default channels only go as high as R-base=3.6.1.
      - pip:
          - rpy2==3.3.6
          - pybrms==0.0.33
    
    (base) $ source activate asd # this changes the prompt to (asd) $ 
    
    (asd) $ conda install -c conda-forge r-v8  # repeat for r-rcpp & r-rcpparmadillo
    
    install.packages("bayesm")  # this was a package from CRAN that was failing compilation as a source package
    
    (asd) $ conda install -c conda-forge boost-cpp # prerequisite for r-bh
    
    (asd) $ conda install -c conda-forge r-bh # prerequisite for r-brms
    
    [showteth@localhost ~] find ~ -name "x86_64-conda-linux-gnu-c++"
    /home/showteth/anaconda3/envs/r351/bin/x86_64-conda-linux-gnu-c++
    
    echo 'PATH=${PATH}:/home/showteth/anaconda3/envs/r351/bin' >> .Renviron