Не удается найти Bio/SeqIO.pm в @INC
Привет, я пытаюсь установить VelvetOptimizer с помощью докера. и это говорит, Не может найти Bio/SeqIO.pm в @INC. Для этого требуется следующее: 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.
Но когда я использую команду "найти": я могу найти файлы.
./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, который представлен переменной с именем @INC. Может кто-нибудь, пожалуйста, дайте мне знать, как решить эту проблему. как добавить его в perls include path.
1 ответ
Очевидно, что /shared/VelvetOptimiser-2.2.5/VelvetOptimiser.pl
имеет
#!/usr/bin/env perl
как его линия Шебанга. Итак, он будет использовать первый 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
,