无法在conda环境中通过cpanm安装Perl模块 [英] Unable to install perl modules via cpanm in conda environments

查看:459
本文介绍了无法在conda环境中通过cpanm安装Perl模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在安装了perl的conda环境中通过cpanm安装perl模块.conda环境的构建具有以下定义:

I'm trying to install perl modules via cpanm inside conda environment with perl installed. The conda environment was build with following definition:

name: perl_env

channels:
  - bioconda
  - conda-forge
  - defaults

dependencies:
  - perl=5.26
  - perl-app-cpanminus
  - perl-local-lib
  - gcc_impl_linux-64
  - gxx_linux-64
  - openmpi=4.1.0

环境结果中安装了以下软件包:

The environment results with the following packages installed:

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
binutils_impl_linux-64    2.35.1               h193b22a_1    conda-forge
binutils_linux-64         2.35                hc3fd857_29    conda-forge
gcc_impl_linux-64         9.3.0               h28f5a38_17    conda-forge
gcc_linux-64              9.3.0               h7247604_29    conda-forge
gxx_impl_linux-64         9.3.0               h53cdd4c_17    conda-forge
gxx_linux-64              9.3.0               h0d07fa4_29    conda-forge
kernel-headers_linux-64   2.6.32              h77966d4_13    conda-forge
ld_impl_linux-64          2.35.1               hea4e1c9_1    conda-forge
libgcc-devel_linux-64     9.3.0               hfd08b2a_17    conda-forge
libgcc-ng                 9.3.0               h5dbcf3e_17    conda-forge
libgfortran-ng            9.3.0               he4bcb1c_17    conda-forge
libgfortran5              9.3.0               he4bcb1c_17    conda-forge
libgomp                   9.3.0               h5dbcf3e_17    conda-forge
libstdcxx-devel_linux-64  9.3.0               h4084dd6_17    conda-forge
libstdcxx-ng              9.3.0               h2ae2ef3_17    conda-forge
mpi                       1.0                     openmpi    conda-forge
openmpi                   4.1.0                h9b22176_1    conda-forge
perl                      5.26.2            h36c2ea0_1008    conda-forge
perl-app-cpanminus        1.7044                  pl526_1    bioconda
perl-carp                 1.38                    pl526_3    bioconda
perl-constant             1.33                    pl526_1    bioconda
perl-cpan-meta            2.150010                pl526_0    bioconda
perl-cpan-meta-requirements 2.140                   pl526_0    bioconda
perl-cpan-meta-yaml       0.018                   pl526_0    bioconda
perl-data-dumper          2.173                   pl526_0    bioconda
perl-encode               2.88                    pl526_1    bioconda
perl-exporter             5.72                    pl526_1    bioconda
perl-extutils-cbuilder    0.280230                pl526_1    bioconda
perl-extutils-makemaker   7.36                    pl526_1    bioconda
perl-extutils-manifest    1.72                    pl526_0    bioconda
perl-extutils-parsexs     3.35                    pl526_0    bioconda
perl-file-path            2.16                    pl526_0    bioconda
perl-file-temp            0.2304                  pl526_2    bioconda
perl-getopt-long          2.50                    pl526_1    bioconda
perl-ipc-cmd              1.02                    pl526_0    bioconda
perl-json-pp              4.04                    pl526_0    bioconda
perl-local-lib            2.000024                pl526_0    bioconda
perl-locale-maketext-simple 0.21                    pl526_2    bioconda
perl-module-build         0.4224                  pl526_3    bioconda
perl-module-corelist      5.20190524              pl526_0    bioconda
perl-module-load          0.32                    pl526_1    bioconda
perl-module-load-conditional 0.68                    pl526_2    bioconda
perl-module-metadata      1.000036                pl526_0    bioconda
perl-params-check         0.38                    pl526_1    bioconda
perl-parent               0.236                   pl526_1    bioconda
perl-perl-ostype          1.010                   pl526_1    bioconda
perl-scalar-list-utils    1.52            pl526h516909a_0    bioconda
perl-text-abbrev          1.02                    pl526_0    bioconda
perl-text-parsewords      3.30                    pl526_0    bioconda
perl-version              0.9924                  pl526_0    bioconda
sysroot_linux-64          2.12                h77966d4_13    conda-forge
zlib                      1.2.11            h516909a_1010    conda-forge

conda env被激活:

The conda env was activated with:

source /igatech/rd/dev/miniconda3/bin/activate
conda activate perl_env

然后从外壳:

eval $(perl -I/igatech/rd/dev/snakemake-workflows/annotation-maker_p/local/perl5/lib/perl5 -Mlocal::lib=/igatech/rd/dev/snakemake-workflows/annotation-maker_p/local/perl5)

然后尝试使用cpanm安装forks软件包:

Then try install forks packages with cpanm:

env PERL5LIB="" PERL_LOCAL_LIB_ROOT="" PERL_MM_OPT="" PERL_MB_OPT="" cpanm --force --notest forks

--> Working on forks
Fetching http://www.cpan.org/authors/id/R/RY/RYBSKEJ/forks-0.36.tar.gz ... OK
Configuring forks-0.36 ... OK
==> Found dependencies: Acme::Damn
--> Working on Acme::Damn
Fetching http://www.cpan.org/authors/id/I/IB/IBB/Acme-Damn-0.08.tar.gz ... OK
Configuring Acme-Damn-0.08 ... OK
Building Acme-Damn-0.08 ... FAIL
! Installing Acme::Damn failed. See /home/mvidotto/.cpanm/work/1610645810.24326/build.log for details. Retry with --force to force install it.
! Installing the dependencies failed: Module 'Acme::Damn' is not installed
! Bailing out the installation for forks-0.36.

详细了解该错误:

tail /home/mvidotto/.cpanm/work/1610645810.24326/build.log


cp Damn.pm blib/lib/Acme/Damn.pm
Running Mkbootstrap for Damn ()
chmod 644 "Damn.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Damn.bs blib/arch/auto/Acme/Damn/Damn.bs 644
"/usr/bin/perl" "/igatech/rd/dev/snakemake-workflows/annotation-maker_p/tests/snakemake/.snakemake/conda/4520f5b9/lib/site_perl/5.26.2/ExtUtils/xsubpp"  -typemap '/igatech/rd/dev/snakemake-workflows/annotation-maker_p/tests/snakemake/.snakemake/conda/4520f5b9/lib/5.26.2/ExtUtils/typemap'  Damn.xs > Damn.xsc
Can't locate object method "new" via package "ExtUtils::ParseXS" at /igatech/rd/dev/snakemake-workflows/annotation-maker_p/tests/snakemake/.snakemake/conda/4520f5b9/lib/site_perl/5.26.2/ExtUtils/xsubpp line 51.
make: *** [Damn.c] Error 255
-> FAIL Installing Acme::Damn failed. See /home/mvidotto/.cpanm/work/1610645810.24326/build.log for details. Retry with --force to force install it.
-> FAIL Installing the dependencies failed: Module 'Acme::Damn' is not installed
-> FAIL Bailing out the installation for forks-0.36.

在安装不同的perl软件包(DBI)时也会发生同样的情况.我真的无法克服此错误,因此我强烈要求帮助,谢谢你的建议.

The same happens while installing different perl packages (DBI). I am not really able to overcome this error so I strongly ask for help, thank you in advice.

是的,您是对的!在激活conda perl_env 中,我得到了奇怪的行为.如果我输入:

Yes, you are right! Within the activate conda perl_env I got strange behaviours. If I type:

which perl

/usr/bin/perl

如果我输入:

command -v perl

/igatech/rd/dev/snakemake-workflows/annotation-maker_p/tests/snakemake/.snakemake/conda/4520f5b9/bin/perl

whereis perl

perl: /usr/bin/perl /igatech/rd/dev/snakemake-workflows/annotation-maker_p/tests/snakemake/.snakemake/conda/4520f5b9/bin/perl /usr/share/man/man1/perl.1.gz

如果我这样做:

perl --version

This is perl 5, version 26, subversion 2 (v5.26.2) built for x86_64-linux-thread-multi

Copyright 1987-2018, Larry Wall
...

或者如果我这样做:

/usr/bin/perl --version

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 40 registered patches, see perl -V for more detail)

Copyright 1987-2012, Larry Wall
...

说实话,众所周知,在我的系统中,哪个命令的行为异常.我不希望这是问题的原因...

To be honest it's known that in my system which command behaves strangely. I wouldn't like that this was the cause of the problem...

PS:conda env 4520f5b9 perl_env

PS: conda env 4520f5b9 is same as perl_env

推荐答案

我可以尝试回答问题的第一部分:在conda环境中安装软件包时如何使用正确的perl.我使用的是Ubuntu 20.04:

I can try answer the first part of the question: How to use the correct perl when installing packages in the conda environment. I am on Ubuntu 20.04:

  • 首先我将Anaconda安装到/home/hakon/anaconda3
  • 然后我创建了一个测试环境:
$ conda create --name perl_test
$ conda activate perl_test

  • 将perl 5.26.2安装到环境中:
  • $ conda install -c anaconda perl
    

    • 初始化的 cpan (假设我以前没有任何 cpan 配置(〜/.cpan/)和本地lib(<代码>〜/perl5/)设置在我的主目录中).选择下面的 local :: lib 选项:
      • Initialized cpan (this assumes that I did not have any previous cpan configuration (~/.cpan/) and local lib (~/perl5/) set up in my home directory). Choose the local::lib option below:
      • $ cpan
        Loading internal null logger. Install Log::Log4perl for logging messages
        Sorry, we have to rerun the configuration dialog for CPAN.pm due to
        some missing parameters. Configuration will be written to
         <</home/hakon/.cpan/CPAN/MyConfig.pm>>
        
        
        CPAN.pm requires configuration, but most of it can be done automatically.
        If you answer 'no' below, you will enter an interactive dialog for each
        configuration option instead.
        
        Would you like to configure as much as possible automatically? [yes] 
        
         <install_help>
        
        Warning: You do not have write permission for Perl library directories.
        
        To install modules, you need to configure a local Perl library directory or
        escalate your privileges.  CPAN can help you by bootstrapping the local::lib
        module or by configuring itself to use 'sudo' (if available).  You may also
        resolve this problem manually if you need to customize your setup.
        
        What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
         [local::lib]           
        
        
        Autoconfiguration complete.
        
        Attempting to bootstrap local::lib...
        
        Writing /home/hakon/.cpan/CPAN/MyConfig.pm for bootstrap...
        commit: wrote '/home/hakon/.cpan/CPAN/MyConfig.pm'
        Fetching with HTTP::Tiny:
        http://www.cpan.org/authors/01mailrc.txt.gz
        Reading '/home/hakon/.cpan/sources/authors/01mailrc.txt.gz'
        ............................................................................DONE
        Fetching with HTTP::Tiny:
        http://www.cpan.org/modules/02packages.details.txt.gz
        Reading '/home/hakon/.cpan/sources/modules/02packages.details.txt.gz'
          Database was generated on Thu, 14 Jan 2021 19:17:03 GMT
          HTTP::Date not available
        .............
          New CPAN.pm version (v2.28) available.
          [Currently running version is v2.18]
          You might want to try
            install CPAN
            reload cpan
          to both upgrade CPAN.pm and run the new version without leaving
          the current session.
        
        
        ...............................................................DONE
        Fetching with HTTP::Tiny:
        http://www.cpan.org/modules/03modlist.data.gz
        Reading '/home/hakon/.cpan/sources/modules/03modlist.data.gz'
        DONE
        Writing /home/hakon/.cpan/Metadata
        Fetching with HTTP::Tiny:
        http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
        Fetching with HTTP::Tiny:
        http://www.cpan.org/authors/id/H/HA/HAARG/CHECKSUMS
        Checksum for /home/hakon/.cpan/sources/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz ok
        'YAML' not installed, will not store persistent state
        Configuring H/HA/HAARG/local-lib-2.000024.tar.gz with Makefile.PL
        Attempting to create directory /home/hakon/perl5
        
        Checking if your kit is complete...
        Looks good
        Generating a Unix-style Makefile
        Writing Makefile for local::lib
        Writing MYMETA.yml and MYMETA.json
          HAARG/local-lib-2.000024.tar.gz
          /home/hakon/anaconda3/envs/perl_test/bin/perl Makefile.PL --bootstrap -- OK
        Running make for H/HA/HAARG/local-lib-2.000024.tar.gz
        cp lib/POD2/DE/local/lib.pod blib/lib/POD2/DE/local/lib.pod
        cp lib/local/lib.pm blib/lib/local/lib.pm
        cp lib/lib/core/only.pm blib/lib/lib/core/only.pm
        cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod
        Manifying 4 pod documents
          HAARG/local-lib-2.000024.tar.gz
          /bin/make -- OK
        Running make test
        PERL_DL_NONLAZY=1 "/home/hakon/anaconda3/envs/perl_test/bin/perl" "-I/home/hakon/perl5/lib/perl5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
        t/bad_variables.t ...... ok   
        t/carp-mismatch.t ...... ok   
        t/classmethod.t ........ ok   
        t/de-dup.t ............. ok   
        t/lib-core-only.t ...... ok   
        t/pipeline.t ........... ok   
        t/shell.t .............. ok       
        t/stackable.t .......... ok     
        t/subroutine-in-inc.t .. ok   
        t/taint-mode.t ......... ok   
        All tests successful.
        Files=10, Tests=196,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.93 cusr  0.28 csys =  1.26 CPU)
        Result: PASS
          HAARG/local-lib-2.000024.tar.gz
          /bin/make test -- OK
        Running make install
        Manifying 4 pod documents
        Installing /home/hakon/perl5/lib/perl5/POD2/PT_BR/local/lib.pod
        Installing /home/hakon/perl5/lib/perl5/POD2/DE/local/lib.pod
        Installing /home/hakon/perl5/lib/perl5/local/lib.pm
        Installing /home/hakon/perl5/lib/perl5/lib/core/only.pm
        Installing /home/hakon/perl5/man/man3/lib::core::only.3
        Installing /home/hakon/perl5/man/man3/local::lib.3
        Installing /home/hakon/perl5/man/man3/POD2::PT_BR::local::lib.3
        Installing /home/hakon/perl5/man/man3/POD2::DE::local::lib.3
        Appending installation info to /home/hakon/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod
          HAARG/local-lib-2.000024.tar.gz
          /bin/make install  -- OK
        
        local::lib is installed. You must now add the following environment variables
        to your shell configuration files (or registry, if you are on Windows) and
        then restart your command line shell and CPAN before installing modules:
        
        PATH="/home/hakon/perl5/bin${PATH:+:${PATH}}"; export PATH;
        PERL5LIB="/home/hakon/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
        PERL_LOCAL_LIB_ROOT="/home/hakon/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
        PERL_MB_OPT="--install_base \"/home/hakon/perl5\""; export PERL_MB_OPT;
        PERL_MM_OPT="INSTALL_BASE=/home/hakon/perl5"; export PERL_MM_OPT;
        
        Would you like me to append that to /home/hakon/.bashrc now? [yes] no
        

        请注意,我回答否".关于上一个问题.

        Note that I answered "no" on the previous question.

        commit: wrote '/home/hakon/.cpan/CPAN/MyConfig.pm'
        
        You can re-run configuration any time with 'o conf init' in the CPAN shell
        Terminal does not support AddHistory.
        
        cpan shell -- CPAN exploration and modules installation (v2.18)
        Enter 'h' for help.
        
        cpan[1]> q
        Terminal does not support GetHistory.
        Lockfile removed.
        
        *** Remember to add these environment variables to your shell config
            and restart your shell before running cpan again ***
        
        PATH="/home/hakon/perl5/bin${PATH:+:${PATH}}"; export PATH;
        PERL5LIB="/home/hakon/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
        PERL_LOCAL_LIB_ROOT="/home/hakon/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
        PERL_MB_OPT="--install_base \"/home/hakon/perl5\""; export PERL_MB_OPT;
        PERL_MM_OPT="INSTALL_BASE=/home/hakon/perl5"; export PERL_MM_OPT;
        

        • 现在,我将生成的本地库复制到conda环境:
        • $ echo $CONDA_PREFIX
          /home/hakon/anaconda3/envs/perl_test
          $ mv ~/perl5 /home/hakon/anaconda3/envs/perl_test
          

          • 然后配置conda环境,以便在激活环境时激活本地库:
          • $ mkdir -p $CONDA_PREFIX/etc/conda/activate.d
            $ vim $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
            

            • 将以下内容添加到以前的 env_vars.sh 文件中:
            • export PATH="$CONDA_PREFIX/perl5/bin${PATH:+:${PATH}}"
              export PERL5LIB="$CONDA_PREFIX/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}";
              export PERL_LOCAL_LIB_ROOT="$CONDA_PREFIX/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}";
              export PERL_MB_OPT="--install_base \"$CONDA_PREFIX/perl5\""
              export PERL_MM_OPT="INSTALL_BASE=$CONDA_PREFIX/perl5"
              

              • 重新启动conda环境以加载上述环境变量:
              • $ conda deactivate
                $ conda activate perl_test
                

                • 安装 cpanm
                • $ cpan App::cpanminus
                  

                  • 安装模块:
                  • $ which cpanm
                    /home/hakon/anaconda3/envs/perl_test/perl5/bin/cpanm
                    $ cpanm forks
                    --> Working on forks
                    Fetching http://www.cpan.org/authors/id/R/RY/RYBSKEJ/forks-0.36.tar.gz ... OK
                    Configuring forks-0.36 ... OK
                    ==> Found dependencies: Devel::Symdump, Acme::Damn, Sys::SigAction, List::MoreUtils
                    --> Working on Devel::Symdump
                    Fetching http://www.cpan.org/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz ... OK
                    Configuring Devel-Symdump-2.18 ... OK
                    Building and testing Devel-Symdump-2.18 ... OK
                    Successfully installed Devel-Symdump-2.18
                    --> Working on Acme::Damn
                    Fetching http://www.cpan.org/authors/id/I/IB/IBB/Acme-Damn-0.08.tar.gz ... OK
                    Configuring Acme-Damn-0.08 ... OK
                    ==> Found dependencies: Test::Exception
                    --> Working on Test::Exception
                    Fetching http://www.cpan.org/authors/id/E/EX/EXODIST/Test-Exception-0.43.tar.gz ... OK
                    Configuring Test-Exception-0.43 ... OK
                    ==> Found dependencies: Sub::Uplevel
                    --> Working on Sub::Uplevel
                    Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz ... OK
                    Configuring Sub-Uplevel-0.2800 ... OK
                    Building and testing Sub-Uplevel-0.2800 ... OK
                    Successfully installed Sub-Uplevel-0.2800
                    Building and testing Test-Exception-0.43 ... OK
                    Successfully installed Test-Exception-0.43
                    Building and testing Acme-Damn-0.08 ... FAIL
                    ! Installing Acme::Damn failed. See /home/hakon/.cpanm/work/1610661561.1411986/build.log for details. Retry with --force to force install it.
                    --> Working on Sys::SigAction
                    Fetching http://www.cpan.org/authors/id/L/LB/LBAXTER/Sys-SigAction-0.23.tar.gz ... OK
                    Configuring Sys-SigAction-0.23 ... OK
                    Building and testing Sys-SigAction-0.23 ... OK
                    Successfully installed Sys-SigAction-0.23
                    --> Working on List::MoreUtils
                    Fetching http://www.cpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-0.430.tar.gz ... OK
                    Configuring List-MoreUtils-0.430 ... OK
                    ==> Found dependencies: Exporter::Tiny, Test::LeakTrace
                    --> Working on Exporter::Tiny
                    Fetching http://www.cpan.org/authors/id/T/TO/TOBYINK/Exporter-Tiny-1.002002.tar.gz ... OK
                    Configuring Exporter-Tiny-1.002002 ... OK
                    Building and testing Exporter-Tiny-1.002002 ... OK
                    Successfully installed Exporter-Tiny-1.002002
                    --> Working on Test::LeakTrace
                    Fetching http://www.cpan.org/authors/id/L/LE/LEEJO/Test-LeakTrace-0.17.tar.gz ... OK
                    Configuring Test-LeakTrace-0.17 ... OK
                    Building and testing Test-LeakTrace-0.17 ... FAIL
                    ! Installing Test::LeakTrace failed. See /home/hakon/.cpanm/work/1610661561.1411986/build.log for details. Retry with --force to force install it.
                    ! Installing the dependencies failed: Module 'Test::LeakTrace' is not installed
                    ! Bailing out the installation for List-MoreUtils-0.430.
                    ! Installing the dependencies failed: Module 'List::MoreUtils' is not installed, Module 'Acme::Damn' is not installed
                    ! Bailing out the installation for forks-0.36.
                    5 distributions installed
                    

                    所以这失败了.如果我尝试手动安装发生故障的模块 Acme :: Damn :

                    So this fails. If I try to install the failing module Acme::Damn manually:

                    $ wget https://cpan.metacpan.org/authors/id/I/IB/IBB/Acme-Damn-0.08.tar.gz
                    $ tar zxvf Acme-Damn-0.08.tar.gz
                    $ cd Acme-Damn-0.08
                    $ perl Makefile.PL
                    Checking if your kit is complete...
                    Looks good
                    Warning: prerequisite Test::Exception 0 not found.
                    Generating a Unix-style Makefile
                    Writing Makefile for Acme::Damn
                    Writing MYMETA.yml and MYMETA.json
                    $ make
                    cp Damn.pm blib/lib/Acme/Damn.pm
                    Running Mkbootstrap for Damn ()
                    chmod 644 "Damn.bs"
                    "/home/hakon/anaconda3/envs/perl_test/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Damn.bs blib/arch/auto/Acme/Damn/Damn.bs 644
                    "/home/hakon/anaconda3/envs/perl_test/bin/perl" "/home/hakon/anaconda3/envs/perl_test/lib/5.26.2/ExtUtils/xsubpp"  -typemap '/home/hakon/anaconda3/envs/perl_test/lib/5.26.2/ExtUtils/typemap'  Damn.xs > Damn.xsc
                    mv Damn.xsc Damn.c
                    /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc -c  -I. -D_REENTRANT -D_GNU_SOURCE --sysroot=/tmp/build/80754af9/perl_1527832170752/_build_env/x86_64-conda_cos6-linux-gnu/sysroot -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2   -DVERSION=\"0.08\" -DXS_VERSION=\"0.08\" -fPIC --sysroot=/tmp/build/80754af9/perl_1527832170752/_build_env/x86_64-conda_cos6-linux-gnu/sysroot "-I/home/hakon/anaconda3/envs/perl_test/lib/5.26.2/x86_64-linux-thread-multi/CORE"   Damn.c
                    /bin/sh: 1: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: not found
                    make: *** [Makefile:337: Damn.o] Error 127
                    

                    它表明 make 试图使用不存在的C编译器:

                    It shows that make tries to use a nonexistent C compiler:

                     /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc
                    

                    cc 的perl配置数据给出了为什么会发生这种情况的线索:

                    A clue to why this happens is given by the perl configuration data for cc:

                    $ perl -V | grep cc=./
                        cc='/tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc'
                    

                    我认为,当perl尝试编译XS模块时,它使用的是与用于编译 perl 的C编译器相同的C编译器.但是在这种情况下,编译器不再存在,因为conda安装(下载)了预编译的perl(因此, cc 变量引用另一台计算机上的编译器,该计算机用于编译该计算机). perl 与)

                    I think that when perl tries to compile an XS module it uses the same C compiler that was used to compile perl with. But in this case that compiler does not exist any more, since conda installed (downloaded) a pre-compiled perl (so the cc variable refers to a compiler on another machine, the machine that was used to compile perl with)

                    这可能意味着您不能(不应)使用下载的预编译的perl安装XS模块.我建议您改为在同一台计算机上从源代码构建perl.

                    Probably this means that you cannot (should not) install XS modules with a downloaded precompiled perl. I would recommend that you build perl from source on the same machine instead.

                    修改

                    糟糕,实际上可以通过运行以下命令安装用于构建perl的相同编译器:

                    My bad, it is actually possible to install the same compiler that was used to build perl by running:

                    $ conda install -c anaconda gcc_linux-64
                    $ which  x86_64-conda_cos6-linux-gnu-gcc
                    /home/hakon/anaconda3/envs/perl_test/bin/x86_64-conda_cos6-linux-gnu-gcc
                    

                    但是我仍然无法使 perl Makefile.PL 使用该版本..

                    But still I am not able to make perl Makefile.PL use that version yet..

                    编辑2

                    添加了后续问题.

                    编辑3

                    后续问题中应用补丁后,我能够安装模块:

                    After applying the patch in the follow-up question, I was able to install the module:

                    $ cpanm forks
                    --> Working on forks
                    Fetching http://www.cpan.org/authors/id/R/RY/RYBSKEJ/forks-0.36.tar.gz ... OK
                    Configuring forks-0.36 ... OK
                    ==> Found dependencies: Acme::Damn, List::MoreUtils
                    --> Working on Acme::Damn
                    Fetching http://www.cpan.org/authors/id/I/IB/IBB/Acme-Damn-0.08.tar.gz ... OK
                    Configuring Acme-Damn-0.08 ... OK
                    Building and testing Acme-Damn-0.08 ... OK
                    Successfully installed Acme-Damn-0.08
                    --> Working on List::MoreUtils
                    Fetching http://www.cpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-0.430.tar.gz ... OK
                    Configuring List-MoreUtils-0.430 ... OK
                    ==> Found dependencies: Test::LeakTrace
                    --> Working on Test::LeakTrace
                    Fetching http://www.cpan.org/authors/id/L/LE/LEEJO/Test-LeakTrace-0.17.tar.gz ... OK
                    Configuring Test-LeakTrace-0.17 ... OK
                    Building and testing Test-LeakTrace-0.17 ... OK
                    Successfully installed Test-LeakTrace-0.17
                    Building and testing List-MoreUtils-0.430 ... OK
                    Successfully installed List-MoreUtils-0.430
                    Building and testing forks-0.36 ... OK
                    Successfully installed forks-0.36
                    4 distributions installed
                    

                    这篇关于无法在conda环境中通过cpanm安装Perl模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆