Не удается найти Text / Soundex.pm в @INC - PullRequest
1 голос
/ 20 апреля 2019

Я устанавливал Repeatsmasker, и, похоже, он работает, потому что показывает «Поздравляем! RepeatMasker теперь готов к использованию». Но когда я запускаю его, он сообщает: «Не удается найти текст / Soundex.pm ...». поэтому я установил модуль с помощью «sudo cpan Text :: Soundex», и в конце он сообщает мне «Text :: Soundex обновлен (3.05)». Кажется, модуль уже установлен, но RepeatMasker все еще имеет ту же проблему, как я покажу вам в этом коде:

fragua@picci:~/RM/RepeatMasker$ sudo cpan Text::Soundex
Loading internal null logger. Install Log::Log4perl for logging messages
Reading '/home/fragua/.cpan/Metadata'
 Database was generated on Fri, 19 Apr 2019 22:17:03 GMT
Text::Soundex is up to date (3.05).

fragua@picci:~/RM/RepeatMasker$ ./RepeatMasker -s -lib /home/fragua/RepeatScout-1.0.5/ObiINK5k_repeats_filtered1.fasta /home/fragua/Documenti/Workdirectory/ObiINC5k.fa
Can't locate Text/Soundex.pm in @INC (you may need to install the Text::Soundex module) (@INC contains: /home/fragua/RM/RepeatMasker /home/fragua/perl5/lib/perl5 /home/fragua/anaconda/lib/site_perl/5.26.2/x86_64-linux-thread-multi /home/fragua/anaconda/lib/site_perl/5.26.2 /home/fragua/anaconda/lib/5.26.2/x86_64-linux-thread-multi /home/fragua/anaconda/lib/5.26.2 .) at /home/fragua/RM/RepeatMasker/Taxonomy.pm line 80.
BEGIN failed--compilation aborted at /home/fragua/RM/RepeatMasker/Taxonomy.pm line 80.
Compilation failed in require at ./RepeatMasker line 310.
BEGIN failed--compilation aborted at ./RepeatMasker line 310.

Я установил RepeatMasker на другом компьютере без проблем, но я не знаю, почему теперь я включил эту проблему

1 Ответ

2 голосов
/ 21 апреля 2019

У вас установлено две сборки 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}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...