У вас установлено две сборки Perl:
/usr/bin/perl
/home/fragua/anaconda/bin/perl
.
/home/fragua/anaconda/bin/perl
первый в вашем ПУТИ. Это означает, что программы со следующей строкой shebang (#!
) будут использовать /home/fragua/anaconda/bin/perl
:
#!/usr/bin/env perl
RepeatMasker
представляется такой программой.
Все это хорошо.
Проблема
/home/fragua/anaconda/bin
содержит сценарии, установленные /home/fragua/anaconda/bin/perl
. Как часть процесса установки этих сценариев, строка shebang этих сценариев должна была быть переписана, чтобы указать /home/fragua/anaconda/bin/perl
.
Тем не менее, строка Шебанга /home/fragua/anaconda/bin/cpan
ссылается на /usr/bin/perl
. Это означает, что при использовании /home/fragua/anaconda/bin/cpan
будут установлены модули для /usr/bin/perl
, а не /home/fragua/anaconda/bin/perl
.
Обходной путь
Вы можете не полагаться на строку Шебанга и явно указать правильный perl
.
/home/fragua/anaconda/bin/perl /home/fragua/anaconda/bin/cpan Text::Soundex
Или, учитывая ваши $PATH
,
perl /home/fragua/anaconda/bin/cpan Text::Soundex
Исправление
Чтобы решить эту проблему постоянно, необходимо изменить строки сценариев в соответствии с тем, какими они должны быть. В каждом файле в /home/fragua/anaconda/bin
(и в частности в cpan
) заменить
#!/usr/bin/perl
с
#!/home/fragua/anaconda/bin/perl
Вы можете сделать это, используя следующее (которое создает резервную копию файлов, которые он изменяет):
perl -0777ne'print "$ARGV\n" if m{^#!\s*/usr/bin/perl\b}' /home/fragua/anaconda/bin/* \
| xargs perl -i~ -0777pe's{^#!\s*/usr/bin/perl\b}{#!/home/fragua/anaconda/bin/perl}'