您好我正在尝试使用docker安装VelvetOptimizer。它说无法在@INC中找到Bio / SeqIO.pm。它需要安装以下内容: Velvet> = 0.7.51,Perl> = 5.8,BioPerl> = 1.4并且我安装了它们
请找到Dockerfile:
FROM amazonlinux
WORKDIR /shared
RUN yum -y install gcc
ADD http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz /shared
RUN tar -xzf perl-5.16.1.tar.gz
WORKDIR /shared/perl-5.16.1
RUN ./Configure -des -Dprefix=/shared/perl-5.16.1/localperl
RUN make
RUN make test
RUN make install
RUN echo “Perl Installation Complete”
ENV PATH=/shared/perl-5.16.1/localperl/bin/:${PATH}
WORKDIR /shared
ADD http://www.ebi.ac.uk/~zerbino/velvet/velvet_latest.tgz .
RUN tar -xvf /shared/velvet_latest.tgz
WORKDIR /shared/velvet_1.2.10/
RUN make
ENV PATH=${PATH}:/shared/velvet_1.2.10/
WORKDIR /shared
RUN echo "BIO PERL INSTALLATION"
RUN \wget -O - https://install.perlbrew.pl | bash
ENV PATH=${PATH}:/root/perl5/perlbrew/bin/
RUN perlbrew install-cpanm
RUN cpanm Bio::Perl
WORKDIR /shared
ADD http://www.vicbioinformatics.com/VelvetOptimiser-2.2.5.tar.gz .
RUN tar zxvf VelvetOptimiser-2.2.5.tar.gz
ENV PATH=${PATH}:/shared/VelvetOptimiser-2.2.4
当我运行命令/ shared / VelvetOptimiser-2.2.5 / VelvetOptimiser.pl时 我收到以下错误:
错误:
Can't locate Bio/SeqIO.pm in @INC (@INC contains: /shared/VelvetOptimiser-2.2.5 /shared/vcftools/src/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /shared/VelvetOptimiser-2.2.5/VelvetOpt/Assembly.pm line 238.
BEGIN failed--compilation aborted at /shared/VelvetOptimiser-2.2.5/VelvetOpt/Assembly.pm line 238.
Compilation failed in require at /shared/VelvetOptimiser-2.2.5/VelvetOptimiser.pl line 37.
BEGIN failed--compilation aborted at /shared/VelvetOptimiser-2.2.5/VelvetOptimiser.pl line 37.
但是当我使用“find”命令时:我能够找到文件。
./root/.cpanm/work/1501770319.1/BioPerl-1.007001/blib/lib/Bio/SeqIO.pm
./root/.cpanm/work/1501770319.1/BioPerl-1.007001/Bio/SeqIO.pm
./shared/perl-5.16.1/localperl/lib/site_perl/5.16.1/Bio/SeqIO.pm
我认为它不在Perl的include路径中找到,它由名为@INC的变量表示。 任何人都可以让我知道如何解决这个问题。如何在perls中添加它包括路径。
答案 0 :(得分:1)
显然,/shared/VelvetOptimiser-2.2.5/VelvetOptimiser.pl
有
#!/usr/bin/env perl
作为它的shebang线。因此,它将使用它在perl
中找到的第一个$PATH
。
perl
中可能有/usr/bin
。在您的Docker文件中,您有:
ENV PATH=${PATH}:/root/perl5/perlbrew/bin/
也就是说,您可能会将/usr/bin
放在perlbrew
目录之前。因此,/usr/bin/env perl
正在通过/usr/bin/perl
(也是您安装新perl
的地方)提取perlbrew
而不是perl
。
所以,试试
ENV PATH=/root/perl5/perlbrew/bin/:${PATH}
此外,我没有看到您实际通过perl
安装了perlbrew
:
你需要
perlbrew install 5.xx.x
perlbrew switch 5.xx.x
在安装cpanm
并安装Bio::Perl
。